argumentai reiksme 1 1
0
1 0 1
0 1 1
0 0 0
Sifravimas algoritmas toks:
1. Imamas tokio ilgio tekstas/duomenys [kuriuos norme uzsifruoti],
koks yra slaptazodzio ilgis.
2. Kiekvienas, atitinkamas teksto/duomenu baitas ir slaptazodzio baitas
pateikami kaip XOR argumentai.
3. Gautas baitas ir yra tas uzsifruotas baitas.
4. Imama sekantys slaptazodzio ilgio baitai ir (kol tekstas/duomenys
nesibaige) vykdoma punktas nr. 2.
Issifravimas analogiskas sifravimui:
Imamas uzsifruotas tekstas/duomenys ir jie dar karta sifruojami pagal
auksciau pateikta algoritma.
Gaunamas nesifruotas tekstas.
Sio metodo trukumai yra tie, jog jei sifrojamas normalus tekstas ir slaptazodis nelabai ilgas, tai gan lengvai galima pralausti si algoritma brute force`u.
Jei kas susizavejo siuo algoritmu, tai parasiau trumpa programele, kuri
demonstruoja sifravima/desifravima duomenis.
uses crt;
var unsifred,
{nesifruota fraze}
sifred,
{sifruota fraze}
desifred,
{issifruota fraze}
key: string;
{sifravimoraktas}
i,
{pagalbinis kintamasis}
ki : byte;
{rakto ilgi nusakantis dydis}
begin
ClrScr; {valom ekrana}
WriteLn ( 'Ivesk fraze kuria sifruosi:' );
ReadLn ( unsifred ); {Ivedam sifruojama fraze}
WriteLn ( 'Ivesk rakta pagal kuri sifruosi:'
);
ReadLn ( key );
{Ivedam sifravimo rakta}
ki := Length ( key ); {Randam rakto ilgi}
sifred := unsifred; {Padarom eilutes,
kuriu ilgiai}
desifred := unsifred; {butu lygus frazes ilgiui}
for i := 1 to Length ( unsifred ) do
{Sifruojame}
sifred [ i ] := Chr
( ord ( unsifred [ i ] ) xor
Ord ( key [ i mod ki ] ) );
WriteLn (sifred); {Sausdiname uzsifruota fraze}
for i := 1 to Length ( unsifred ) do {Desifruojame/atsifruojame}
desifred [ i ] :=
Chr ( ord ( sifred [ i ] ) xor
Ord ( key [ i mod ki ] ) );
WriteLn (desifred); {Sausdiname atsifruota fraze}
ReadLn; {Laukiame [ENTER] paspaudimo}
® 2002-2003 VaidaZ <> Patariu ikelti i Turbo Pascal programa. [Vaidas]