Chciałbym zaprezentować prosty, popularny szyfr Cezara. Idea szyfru polega na podstawieniu pod litery alfabetu jawnego, litery alfabetu zaszyfrowanego.
Alfabet zaszyfrowany to taki, który jest przesunięty o ilość liter. Przesuwać można w lewo lub w prawo – a sam alfabet się zatacza, tzn:
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 oto alfabet jawny.
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 oto alfabet zaszyfrowany.
Jak widać przesuniecie jest równe 3. W tym przykładzie przesuwam w lewo, usuwając 3 pierwsze litery i wstawiając je na koniec alfabetu.
Oto skrypt w PHP, który zaszyfruje tekst, szyfrem 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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <?php class SzyfrCezara { private $alfabet; private $przesuniec; public function __construct($iloscPrzesuniec){ for($a = ord('A'); $a<=ord('Z'); $a++) { $this->alfabet[chr($a)]=chr($a); } $this->przesuniec=$iloscPrzesuniec; } private function stworzAlfabet(){ $szyfr; foreach($this->alfabet as $litera) { $szyfr[$litera] = chr(65+(ord($litera)-(65-$this->przesuniec)) % 26 ); } return $szyfr; } public function szyfruj($tekst){ $tekst= str_split( strtoupper($tekst) ); $szyfr = $this->stworzAlfabet(); $nowyTekst=""; foreach((array)$tekst as $litera) $nowyTekst.=$litera==" "?" ":$szyfr[$litera]; return $nowyTekst; } public function odszyfruj($tekst){ $deszyfr = array_flip($this->stworzAlfabet()); $tekst= str_split( strtoupper($tekst) ); $nowyTekst=""; foreach((array)$tekst as $litera) $nowyTekst.=$litera==" "?" ":$deszyfr[$litera]; return $nowyTekst; } } $txt='testujemy'; $t = new SzyfrCezara(3); $zaszyfrowany = $t->szyfruj($txt); echo 'Szyfrujemy: '.$txt.'<br>'; echo 'Zaszyfrowany: '.$zaszyfrowany.'<br>'; echo 'Odszyfrowany '.$t->odszyfruj( $zaszyfrowany ); |
W konstruktorze podajemy długość przesunięcia. A metoda szyfruj() – zwraca zaszyfrowany tekst.
Metodą odszyfruj możemy odszyfrować tekst :)
Pozdrawiam!
Cześć. Dziś luźny artykuł, bo dziś pobawimy się jedną z pierwszy wersji Pythona. Skompilujemy go i zobaczymy co tam w… Read More
Nowy rok czas zacząć! Więc lećmy z podsumowaniem. Nowy artykuł Nie uwierzycie, ale pojawił się na blogu nowy artykuł! Piszę… Read More
Cześć! W Pythonie 3.13 dodano JITa! JIT, czyli just-in-time compiler to optymalizacja na która Python naprawdę długo czekał. Na nasze… Read More
Cześć! Zapraszam na podsumowanie roku 2024. Książki W sumie rok 2024 był pod względem ilości książek nieco podobny do roku… Read More
Podtrzymując tradycję, prawie regularnych podsumowań, zapraszam na wpis! Nie mogło obyć się bez Karkonoszy We wrześniu odwiedziłem z kolegą Karkonosze,… Read More
Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More