Szyfrowanie binarne

Kliknij i wspomóż mnie :)

Java

Wstęp

Ostatnio miałem przyjemność rozwiązania dość ciekawego zadania z Javy. Jego treść brzmi tak:

Napisz program, który wczyta jeden wiersz tekstu i wydrukuje go w wersji zaszyfrowanej. Szyfrowanie pojedynczej litery polega na odpowiedniej zamianie kolejności czterech najmniej znaczących bitów. Miejscami powinny zostać zamienione trzeci bit z czwartym oraz pierwszy z drugim. Program ma wczytywać ze strumienia wejściowego znaki tak długo, aż napotka znak nowej linii. Wówczas ma wypisać zakodowany ciąg znaków.

Dlaczego takie ciekawe?

Po pierwsze porusza temat zagadnienie tych najmniej ważnych bitów.

Po drugie podczas zadania przechodzimy od formy zwykłego znaku np. 'a' do postaci bitowej.

Wygląda to mniej więcej tak:

Strumień wejściowy

Tekst wczytuję za pomocą klasy Scanner.

Naciśnięcie Enter na klawiaturze spowoduje zakończenie skanowania i przejścia do funkcji getEncrypted().

String jako tablica znaków

Jeżeli chcemy szyfrować pojedynczy znak to musimy go jakoś "wyłuskać" z całego tekstu.

W tym celu za pomocą funkcji toCharArray() zamieniam obiekt String na char[]. To pozwoli mi iterować po wszystkich.

Funkcja encrypt() jako parametr dostaje znak do zaszyfrowania i zwraca już gotowy. Zobaczmy jak ona wygląda.

Szyfrowanie

Kluczowa jest tutaj funkcja toBinaryString(). Zamienia ona kod ASCII danej litery (character & 0xFF) na ciąg zer i jedynek.

Problem z nią jest jednak taki, że usunie zera z prawej strony. Za pomocą formatowania określamy, że ciąg ma mieć 8 znaków:

String.format("%8s",

Oraz puste miejsca mają zostać wypełnione zerami:

.replace(' ', '0');

Później formę binarną znów zamieniamy na tablicę znaków i za pomocą funkcji replaceBits() przestawiam znaki.

Funkcja w return z powrotem zamienia postać bitów na char.

Przestawianie bitów

Kod nie jest za bardzo uniwersalny, ale w zadaniu jest jasno określone, że mamy przestawić trzeci z czwartym od końca oraz ostatni z przedostatnim.

Ten prosty algorytm to realizuje :)

Jeżeli nic po drodze się nie zepsuło to kod powinien zadziałać w powyższy sposób.

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.