1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #coding=utf8
- """ Funkcje służące do szyfrowania historycznie """
- def caesar(string, shift=3):
- """ Szyfrujemy przesuwając literki w alfabecie o wartość shift """
- result = ""
- upper_a = ord('A')
- lower_a = ord('a')
- for c in string:
- if c.isupper():
- result += chr(((ord(c) - upper_a + shift) % 26) + upper_a)
- else:
- result += chr(((ord(c) - lower_a + shift) % 26) + lower_a)
- return result
- def e_vigenere(key, string):
- """ Funkcja szyfrująca za pomocą algorytmu Vigenere'a """
- result = ""
- upper_a = ord('A') #used for choosing the proper shift
- lower_a = ord('a')
- for i,c in enumerate(string):
- #print i, c
- if c.isalpha():
- result += caesar(c, ord(key[(i%len(key))]) - (upper_a if c.isupper() else lower_a))
- else:
- result += c
- return result
- def d_vigenere(key, string):
- result = ""
- upper_a = ord('A') #used for choosing the proper shift
- lower_a = ord('a')
- for i,c in enumerate(string):
- #print i, c
- if c.isalpha():
- result += caesar(c, -(ord(key[(i%len(key))]) - (upper_a if c.isupper() else lower_a)))
- else:
- result += c
- return result
- # konkurs Historia kryptografii
|