Szyfr Cezara
Program symuluje działanie szyfru Cezara
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | A | B | C |
Zobacz:
Przykładowa implementacja w Pythonie
Wersja z podręcznika Migra - Teraz Bajty (klasa III SPP)
def znak_na_kod(znak): return ord(znak.upper()) - ord('A') def kod_na_znak(kod): return chr(kod + ord('A')) def zaszyfruj(napis, klucz): wynik = "" for znak in napis: kod = znak_na_kod(znak) kod_znaku_zaszyfrowany = (kod + klucz) % 26 wynik += kod_na_znak(kod_znaku_zaszyfrowany) return wynik def deszyfruj(szyfrogram, klucz): return zaszyfruj(szyfrogram, 26-klucz) szyfrogram = zaszyfruj("matematyka", 3) jawny = deszyfruj(szyfrogram, 3) print(szyfrogram) print(jawny)
Moja wersja z własnym alfabetem i łamaniem kodu:
alfabet = 'AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻaąbcćdeęfghijklłmnńoóprsśtuwyzźż0123456789:;,. ' litery = [litera for litera in alfabet] #print(litery) #wersja klasyczna - tylko małe litery, bez polskich znaków def szyfruj_znak(znak, klucz): return chr((ord(znak) - 97 + klucz) % 26 + 97) def szyfruj(tekst, klucz): pom = "" for znak in tekst: pom = pom + szyfruj_znak(znak, klucz) return pom def deszyfruj(tekst, klucz): return szyfruj(tekst, 26-klucz) #wersja małe i duże litery z polskimi znakami i spacją def szyfruj_znak_pl(znak, klucz): if znak not in litery: return znak for i, litera in enumerate(litery): if znak == litera: return litery[(i+klucz)%len(litery)] def szyfruj_pl(tekst, klucz): pom = "" for znak in tekst: pom = pom + szyfruj_znak_pl(znak, klucz) return pom def deszyfruj_pl(tekst, klucz): return szyfruj_pl(tekst, len(litery)-klucz) #print(szyfruj("tajne", 3)) #print(deszyfruj("wdmqh", 3)) #łamanie szyfru for i in range(1,len(alfabet)): print(i, deszyfruj_pl('FISŃLRItetcąŹMŃtŹtjipii', i)) # zaszyfrowany = szyfruj_pl("Zajęcia w środę o 10:00", 58) # odszyfrowany = deszyfruj_pl(zaszyfrowany, 58) # print(zaszyfrowany) # print(odszyfrowany)