Szyfr Cezara – szyfr CEZARA online, przykłady, gotowa implementacja

Szyfr Cezara – szyfr CEZARA online, przykłady, gotowa implementacja

Szyfr Cezara – to jeden z najprostszych i jednocześnie najstarszych szyfrów używanych do szyfrowania tekstu. Wykorzystywany był jeszcze zanim ktokolwiek słyszał o programowaniu 🙂

Szyfr Cezara

Szyfr Cezara polega na przesunięciu każdej litery alfabetu o stałą liczbę pozycji w prawo lub w lewo.

Szyfr Cezara

Szyfr Cezara jest jedną z najprostszych technik szyfrowania. Jest to rodzaj szyfru podstawieniowego, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest inną, oddaloną od niej o stałą liczbę pozycji w alfabecie literą (szyfr monoalfabetyczny).

W podstawowej wersji tego algorytmu – nie rozróżnia się przy tym liter dużych i małych.

Zobaczmy to na przykładzie.

Szyfr Cezara – Przykład

Działanie szyfru Cezara jest bardzo proste. Należy wybrać:

  • ustaloną wartość przesunięcia liter,
  • a następnie zastosować to przesunięcie do każdej litery w tekście.

Przykładowo, jeśli ustalimy przesunięcie o 3 pozycje w prawo, to:

  • litera A zostanie zaszyfrowana jako litera D,
  • B jako E,
  • C jako F itd.

Szyfr Cezara – Historia

Za autora tego szyfru uznaje się Juliusza Cezara, który prawdopodobnie używał go do szyfrowania swoich prywatnych listów w korespondencji ze znajomymi.

Dziś, gdyby nasi politycy próbowali wykorzystać ten lub podobny szyfr – szybko usłyszelibyśmy o ich listach i wiadomościach 😉

Szyfr Cezara – Algorytm

Algorytm szyfrowania zastosowany w kodzie Cezara jest bazą dla wielu innych systemów szyfrujących, jak chociażby szyfru Vigenère’a, czy ROT13.

➡ ZOBACZ 👉: ROT13 – ROT13 online, przykłady, gotowa implementacja

Jednak należy pamiętać, że tego typu techniki podmieniające pojedyncze litery alfabetu na inne, nie oferują w praktyce żadnego bezpieczeństwa komunikacji…

O ile w czasach Cezara takie podejście mogło się sprawdzać, tak obecnie jest to zwyczajnie zbyt prymitywny algorytm szyfrowania. Przez co bardzo szybko zostałby złamany, a nasza wiadomość mogłaby dostać się w niepowołane ręce.

Szyfr Cezara – implementacja

Aby lepiej zrozumieć działanie szyfru Cezara, warto przyjrzeć się implementacji w Java. Albo nawet lepiej! Samodzielnie spróbować ją przygotować 🙂

Jeżeli dopiero stawiasz swoje pierwsze kroki w programowaniu, to zapraszam do naszego darmowego kursu Java:

➡ ZOBACZ 👉: Kurs Java | Darmowy Kurs Programowania w Javie

Jeżeli natomiast myślisz o pracy jako programista i chcesz zostać Junior Developerem, zobacz ten materiał:

➡ ZOBACZ 👉: Młodszy programista (Junior developer) – jak zostać?, CV, zarobki, praca

E-book Java Cheat Sheet

E-book Java Cheat Sheet Pobierz darmowy e-book Java Cheat Sheet.

To kompendium wiedzy, dla osób, które uczą się lub chcą uczyć się programowania w Javie.

Aż 24 strony samych konkretów!

Znajdziesz w nim:

  • grafiki,
  • przykłady kodu,
  • komendy,
  • objaśnienia,

dzięki którym nauka Javy będzie dużo łatwiejsza!

➡ ZOBACZ 👉: Pobieram e-book Java Cheat Sheet

Szyfr Cezara – Java

Poniższy kod przyjmuje tekst, który ma zostać zaszyfrowany, oraz wartość przesunięcia, a następnie zwraca zaszyfrowany tekst:

public String decrypt(String input, int shift) {
		StringBuffer result = new StringBuffer();

		for (int i = 0; i < input.length(); i++) {
			char c = input.charAt(i);

			int charPosition = alphabet.indexOf(c);

			if (charPosition < 0) {
				result.append(c);

			} else {
				int newKey = (charPosition + shift) % alphabet.length();
				char newValue = alphabet.charAt(newKey);

				result.append(newValue);
			}
		}

		return result.toString();
	}

W powyższym kodzie wykorzystujemy zmienną pomocniczą, która przechowuje znaki wykorzystywane w alfabecie. Możemy spotkać się różnymi wersjami tego algorytmu, w zależności od wykorzystywanego alfabetu, np.

  • Małe znaki języka angielskiego – abcdefghijklmnopqrstuvwxyz

Nic jednak nie stoi na przeszkodzie, by rozwinąć go np. do

  • wszystkich liter polskiego alfabetu oraz cyfr – aąbcćdeęfghijklłmnoópqrsśtuvwxyzźżAĄBCĆDEĘFHGIJKLMNOÓPQRSŚTUVWXYZŹŻ

Należy jedynie pamiętać, żeby do szyfrowania i odszyfrowywania naszych wiadomości wykorzystać to samo przesunięcie oraz ten sam alfabet.

Szyfr Cezara – Omówienie algorytmu

Gdy mamy już ustalone znaki alfabetu, algorytm szyfrowania sprowadza się do kilku prostych kroków:

  • iterujemy po wszystkich znakach tekstu, który chcemy zaszyfrować
  • i dla każdego z nich, próbujemy odnaleźć pozycję w naszym alfabecie,
  • jeżeli odnajdziemy znak w alfabecie, to zaszyfrowany znak będzie pod indeksem powiększonym o wykorzystywane przesunięcie,
  • w przeciwnym wypadku do szyfrogramu trafia niezmieniony znak.

➡ ZOBACZ 👉: StringBuilder: czy zawsze taki szybki? | String vs StringBuilder vs StringBuffer

Aby zaszyfrować tekst, można wywołać tę funkcję w następujący sposób:

CaesarCipher.polishLetters().encrypt("Ala Zna Javę", 12);

Wynikiem będzie zaszyfrowany tekst: „rbR ÓdR ARłX”.

Szyfr Cezara – Podsumowanie

Szyfr Cezara jest bardzo prostym i łatwym do złamania algorytmem, dlatego nie powinien być obecnie wykorzystywany w kryptografii.

Świetnie jednak sprawdza się jako ćwiczenie programistyczne dla osób, które chcą rozwijać swoje umiejętności oraz poznać podstawy kryptografii.


20+ BONUSOWYCH materiałów z programowania

e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!

Jak zostać programistą

No comments
Share:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *