Szyfr Cezara

Program symuluje działanie szyfru Cezara

1234567891011121314151617181920212223242526
ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHIJKLMNOPQRSTUVWXYZABC

Zobacz:

Przykładowa implementacja w Pythonie

Wersja z podręcznika Migra - Teraz Bajty (klasa III SPP)

  1. def znak_na_kod(znak):
  2. return ord(znak.upper()) - ord('A')
  3.  
  4. def kod_na_znak(kod):
  5. return chr(kod + ord('A'))
  6.  
  7. def zaszyfruj(napis, klucz):
  8. wynik = ""
  9. for znak in napis:
  10. kod = znak_na_kod(znak)
  11. kod_znaku_zaszyfrowany = (kod + klucz) % 26
  12. wynik += kod_na_znak(kod_znaku_zaszyfrowany)
  13. return wynik
  14.  
  15. def deszyfruj(szyfrogram, klucz):
  16. return zaszyfruj(szyfrogram, 26-klucz)
  17.  
  18. szyfrogram = zaszyfruj("matematyka", 3)
  19. jawny = deszyfruj(szyfrogram, 3)
  20. print(szyfrogram)
  21. print(jawny)

Moja wersja z własnym alfabetem i łamaniem kodu:

  1. alfabet = 'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż0123456789:;,. '
  2. litery = [litera for litera in alfabet]
  3. #print(litery)
  4.  
  5. #wersja klasyczna - tylko małe litery, bez polskich znaków
  6. def szyfruj_znak(znak, klucz):
  7. return chr((ord(znak) - 97 + klucz) % 26 + 97)
  8.  
  9. def szyfruj(tekst, klucz):
  10. pom = ""
  11. for znak in tekst:
  12. pom = pom + szyfruj_znak(znak, klucz)
  13.  
  14. return pom
  15.  
  16. def deszyfruj(tekst, klucz):
  17. return szyfruj(tekst, 26-klucz)
  18.  
  19. #wersja małe i duże litery z polskimi znakami i spacją
  20. def szyfruj_znak_pl(znak, klucz):
  21. if znak not in litery: return znak
  22. for i, litera in enumerate(litery):
  23. if znak == litera:
  24. return litery[(i+klucz)%len(litery)]
  25.  
  26. def szyfruj_pl(tekst, klucz):
  27. pom = ""
  28. for znak in tekst:
  29. pom = pom + szyfruj_znak_pl(znak, klucz)
  30. return pom
  31.  
  32. def deszyfruj_pl(tekst, klucz):
  33. return szyfruj_pl(tekst, len(litery)-klucz)
  34.  
  35. #print(szyfruj("tajne", 3))
  36. #print(deszyfruj("wdmqh", 3))
  37.  
  38. #łamanie szyfru
  39. for i in range(1,len(alfabet)):
  40. print(i, deszyfruj_pl('FISŃLRItetcąŹMŃtŹtjipii', i))
  41.  
  42.  
  43. # zaszyfrowany = szyfruj_pl("Zajęcia w środę o 10:00", 58)
  44. # odszyfrowany = deszyfruj_pl(zaszyfrowany, 58)
  45.  
  46. # print(zaszyfrowany)
  47. # print(odszyfrowany)