szyfrowanie.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #coding=utf8
  2. """ Funkcje służące do szyfrowania historycznie """
  3. def caesar(string, shift=3):
  4. """ Szyfrujemy przesuwając literki w alfabecie o wartość shift """
  5. result = ""
  6. upper_a = ord('A')
  7. lower_a = ord('a')
  8. for c in string:
  9. if c.isupper():
  10. result += chr(((ord(c) - upper_a + shift) % 26) + upper_a)
  11. else:
  12. result += chr(((ord(c) - lower_a + shift) % 26) + lower_a)
  13. return result
  14. def e_vigenere(key, string):
  15. """ Funkcja szyfrująca za pomocą algorytmu Vigenere'a """
  16. result = ""
  17. upper_a = ord('A') #used for choosing the proper shift
  18. lower_a = ord('a')
  19. for i,c in enumerate(string):
  20. #print i, c
  21. if c.isalpha():
  22. result += caesar(c, ord(key[(i%len(key))]) - (upper_a if c.isupper() else lower_a))
  23. else:
  24. result += c
  25. return result
  26. def d_vigenere(key, string):
  27. result = ""
  28. upper_a = ord('A') #used for choosing the proper shift
  29. lower_a = ord('a')
  30. for i,c in enumerate(string):
  31. #print i, c
  32. if c.isalpha():
  33. result += caesar(c, -(ord(key[(i%len(key))]) - (upper_a if c.isupper() else lower_a)))
  34. else:
  35. result += c
  36. return result
  37. # konkurs Historia kryptografii