The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
The Art of Reversing by Ap0x - Tutoriali.org
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
jedan za enkripciju i jedan za dekripciju. Primer za koriscenje simetricnog<br />
algoritma bi bio koriscenje algoritma koji transformise nasu plaintext poruku<br />
u ciphertext pomocu jednog specificnog kljuca, odnosno sledeci Delphi kod:<br />
function EncryptDecrypt(inputhash:string;key:integer):string;<br />
var<br />
i:integer;<br />
begin<br />
for i := 1 to Length(inputhash) do begin<br />
inputhash[i] := Chr(Ord(inputhash[i]) XOR key);<br />
end;<br />
EncryptDecrypt := inputhash;<br />
end;<br />
Ovaj kod jednostavnim XORovanjem svakog slova sa KEY vrednoscu<br />
plaintext pretvara u ciphertext. Posto znamo da je operacija XOR<br />
reverzibilna, zakljucujemo da ce se algoritam ponasati tako da isti kljuc<br />
enkriptuje plaintext u ciphertext i obrnuto. Ovo je samo jedan primer kada se<br />
kod simetricnog algoritma koristi samo jedna funkcija za enkripciju, odnosno<br />
dekripciju. Nasuprot tome postoje i algoritmi koji koriste posebne procedure<br />
za enkripciju i dekripciju. Posto se i za ovakav tip algoritama koristi isti kljuc<br />
za enkripciju i dekripciju, i ovi algoritmi pripadaju grupi simetricnih<br />
algoritama. Primer za ovo bi bio:<br />
function Encrypt(inputhash:string;key:integer):string;<br />
var<br />
i:integer;<br />
begin<br />
for i := 1 to Length(inputhash) do begin<br />
inputhash[i] := Chr(Ord(inputhash[i]) + key);<br />
end;<br />
Encrypt := inputhash;<br />
end;<br />
function Decrypt(inputhash:string;key:integer):string;<br />
var<br />
i:integer;<br />
begin<br />
for i := 1 to Length(inputhash) do begin<br />
inputhash[i] := Chr(Ord(inputhash[i]) - key);<br />
end;<br />
Decrypt := inputhash;<br />
end;<br />
Ovde se za enkripciju koristi tehnika pomeranja slova plaintexta za vrednost<br />
kljuca u pozitivnu stranu, dok se prilikom dekripcije ciphertext pomera u<br />
negativnu stranu. Posto su matematicke operacije, plus i minus suprotne<br />
logicno je da ce se za enkripciju i dekripciju koristiti isti kljuc.<br />
Sa druge strane, u odnosu na simetricne algoritme, nalaze se<br />
asimetricni algoritmi koji za enkripciju i dekripciju koriste razlicite kljuceve.<br />
Ova dva kljuca moraju biti povezana nekom, izuzetno slozenom<br />
matematickom relacijom na nacin pomocu koga se iz jednog moze dobiti<br />
drugi. Ovo znaci da se na osnovu istih podataka racunaju i jedan i drugi kljuc<br />
ali se sami zasebno tesko mogu povezati. Posto se jedan kljuc koristi samo<br />
za enkripciju a jedan samo za dekripciju mozemo slobodno reci da se ova<br />
dva kljuca takodje mogu podeliti na privatni i javni kljuc. Ovo znaci da u<br />
<strong>The</strong> <strong>Art</strong> <strong>of</strong> <strong>Reversing</strong> <strong>by</strong> <strong>Ap0x</strong> Page 159 <strong>of</strong> 293