Moja metoda szyfrowania danych #1
Witaj! To co czytasz to mój pierwszy post, więc proszę cię o pozostawienie opinii w komentarzu.
W tym poście opowiem wam o mojej metodzie szyfrowania danych, a konkretnie tekstu. Nie ma tu nic zaskakującego, więc metoda jest prosta, bezstratna i działa w 2 strony.
Tak więc zaczynamy!
Szyfrowanie
Na samym początku przygotujemy sobie funkcję.
Pierwszym krokiem mojej metody szyfrowania jest odwrócenie tekstu. Zrobimy to dzięki klasie
StringBuilder
. Aby odwrócić tekst dzięki tej klasie tworzymy zmienną typu
String
. Następnie w tej zmiennej robimy nowy obiekt
StringBuilder
, gdzie jako argument dajemy mu nasz tekst, czyli
txt
. Następnie metodą
reverse()
odwracamy tekst. W tym momencie na pewno wyskoczy wam błąd, gdyż musimy ten obiekt zamienić na tekst metodą
toString()
Kolejnym krokiem jest zamiana odwróconego tekstu na wartości heksadecymalne. Normalnie zmienilibyśmy go w coś typu: AF54 jednak moja metoda tworzy wartości AF 54 – każdy znak w zapisie heksadecymalnym (2 znaki hex na znak) jest oddzielony spacją.
W Javie nie znalazłem metody zamieniającej String na wartości heksadecymalne, więc napiszemy swoją. Wykorzystamy do tego klasę
BigInteger
. Jako argumenty podamy: 1 – gdyż pierwszy argument to znak, a 1 to dodatni oraz
byte[]
uzyskany z tekstu (metoda getBytes może wyrzucić
UnsupportedEncodingException
więc do funkcji dodamy
throws UnsupportedEncodingException
). Aby z
BigInteger
uzyskać tekst potrzebujemy metody
String.format
. Jako pierwszy argument podamy
%x
ponieważ chcemy uzyskać liczbę w zapisie heksadecymalnym, a jako drugi nasz
BigInteger
Gdyby nie moje wydziwianie, z tymi spacjami, tu moglibyśmy skończyć, jednak jak już mówiłem, chcę mieć zapis: XY XY XY, a nie XYXYXY. Do tego musimy nasz string z wartościami hex zamienić na
char[]
, a następnie pętlą for dodać spację przed co 2 znak. Niestety jak wiadomo 0 modulo 2 to 0 więc na początku doda się spacja, ale usuniemy ją dzięki metodzie
substring
.
Przy okazji zrobimy sobie też metodę zwracającą wartości ASCII znaków. Na początku tworzymy sobie
int[]
, który będzie przechowywał nasze wartości ASCII. Jako wielkość tablicy podamy mu długość tekstu. Następnie za pomocą pętli
for
uzyskamy znaki
char
, które łatwo zamienić na wartości
int
.
Potrzebna będzie nam jeszcze funkcja zwracająca
String
z wartości ASCII, nie będę omawiał jak działa, gdyż jest podobna do tej, którą pokazałem przed chwilą.
W końcu możemy wrócić do naszej funkcji
encrypt
! 😀
Na początku tworzymy sobie string z wartościami hex tekstu. Następnie ten string zamieniamy na wartości ASCII (nazwa: ascii). Przyda nam się też druga tablica (nazwa: ascii2), więc możemy wykorzystać metodę
.clone()
. I teraz cała zabawa się zaczyna. W pętli
for
zapisujemy następujący kod:
ascii2[i] = ascii[i]+13+i%10;
– co to robi? Już mówię. Do wartości „i” z tablicy ascii2 przypisujemy wartość „i” z tablicy ascii + 13 (moja ulubiona liczba :p) + i%10 (bez tego nasz szyfr byłby łatwy do odczytania. Czemu nie dałem po prostu +i? Ponieważ po pewnym czasie może to wyjść poza zakres ASCII).
Ostatni krok to już tylko zamiana wartości ASCII na string, więc wrzucę tu już gotową funkcję 😀
Przykładowo zakodowane wartości:
- Hello World – CB/Ft2JF5Ls.DG1DC4K|-Dr0Gu3JJ6AF
- Programowanie – CC/FJ2Iy5L>. [email protected] /GC2HD
- żółć ąę – [email protected] /sF2uw
W następnym poście pojawi się deszyfrowanie, gdyż ten post byłby za długi 🙂 Do zobaczenia wkrótce 😀
KuZu
Hej! Mam na imię Kuba, mam 14 lat. Piszę już kilka lat, głównie w Javie. Głównie piszę różne pierdółki, lecz tworzę też ciekawe projekty.
Komentarze