Artykuły >>
Projekty >>
Downloads >>
Serwis >>
Mając dwadzieścia lat myślałem tylko o kochaniu. Potem kochałem już tylko myśleć. Albert Einstein
/ LHP / projekty
LukasDeszyfrer

Co to jest?

LukasDeszyfrer Program potrafiący łamać kod najróżniejszych tekstów w szczególności w przypadku, gdy nie wiemy jak zostały zakodowane. Sprawdzane są różne metody (np. przestawieniowe, przesunięciowe) a następnie wynik odszukiwany jest w słowniku. Jeśli wyniki pracy są pomyślne (słowo znajduje się w słowniku), to oznacza, że metoda jest dobra, jeśli jest podobne do któregoś ze słów, to program nadal pracuje wybraną metodą dotąd aż nie złamie zaszyfrowanego tekstu.
Jeśli pomimo tego nie uda mu się tego uczynić następuje wnioskowanie i decydowanie o kolejnych sposobach deszyfrowawnia w kolejności od jak najbardziej prawdopodobnego. Ten projekt zabierze mi trochę czasu. Póki co mogę wam zaprezentować już pierwotny interfejs użytkownika (zrzut obok).

Rozwiązanie problemu ROTX

Poniżej przedstawiam uniwersalne rozwiązanie problemu kodowania ROTX które można zawrzeć w jednej procedurze.
Rozwiązanie problemu kodowania ROTX A... Zresztą - co mi tam - macie tutaj kod w Delphi: // Uniwersalna funkcja przeprowadzająca kodowanie ROTX (autor: Łukasz "Lukas" Wyporek, http://www.lukas-home-page.ovh.org/ ) function KodujOdkodujROT(tekst : string; przesuniecie : integer; kodowanie : boolean): string; // Funkcja zwraca -1 gdy liczba ujemna lub +1 gdy liczba dodatnia lub równa 0 function Sig(liczba : integer) : integer; begin if (liczba shr 31) = 1 Then Result := -1 else Result := 1; end; var i, k, podzialka : integer; C : integer; begin k := Sig(Integer(kodowanie)-1); C := Ord('Z')-Ord('A')+1; podzialka := Round((C/2)+k*(C/2))-k*przesuniecie; for i:=1 To Length(tekst) Do if (tekst[i] in ['A'..Chr(Ord('A')+podzialka-1)]) or (tekst[i] in ['a'..Chr(Ord('a')+podzialka-1)]) Then tekst[i] := Chr(Ord(tekst[i]) + (Round((C/2)-k*(C/2))+k*przesuniecie)) else if (tekst[i] in [Chr(Ord('A')+podzialka)..'Z']) or (tekst[i] in [Chr(Ord('a')+podzialka)..'z']) Then tekst[i] := Chr(Ord(tekst[i]) - (Round((C/2)+k*(C/2))-k*przesuniecie)); Result := tekst; end;

Łukasz "Lukas" Wyporek
lukas.home.page@gmail.com

Dexter
Czytelniku! Pomóż
rozruszać dyskusję!