А вот код программы на TP, сделав отладку, и не могу найти ошибку, постоянно чио-то вылезает:
// Коментарии
// при компиляции комментарии убрать
const strPwd:string='HGSDYGDSLWREIUCJD938439402342'; //ключ
a:array[1..3,1..16] of integer =(
(133,181,139,46,147,183,62,82,76,53,124,65,154,223 ,219,237), // номера зашифрованных файлов в шопе они выглядят так :|133|181|139.... (132,176,134,43,148,183,60,83,75,55,120,67,155,208 ,208,231),
(130,181,140,45,148,182,58,82,76,48,118,71,153,216 ,210,0));
// сам код раскриптовки
var
x,y,l,i,j,k:integer;
sbox,rc4key:array[0..255] of integer;
Procedure Init;
Begin
x:=0; y:=0;
for i:=0 to 255 do
begin
sbox[i]:=i;
rc4key[i]:=ord(strPwd[(i mod length(strPwd))+1]);
end;
k:=0;
for i:=0 to 255 do
begin
k:=(k+sbox[i]+rc4key[i]) mod 256;
j:=sbox[i];
sbox[i]:=sbox[k];
sbox[k]:=j;
end;
End;
begin
writeln;writeln;writeln;writeln;writeln;writeln;
FOR l:=1 to 3 do
Begin
Init;
WriteLn;
for i:=1 to 16 do
Begin
x:=(x+1) mod 256;
y:=(y+sbox[x]) mod 256;
k:=sbox[x];sbox[x]:=sbox[y];sbox[y]:=k;
j:=(sbox[x]+sbox[y]) mod 256;
write(chr(a[l,i] xor sbox[j]));
End;
End;
// Коментарии
// при компиляции комментарии убрать
const strPwd:string='HGSDYGDSLWREIUCJD938439402342'; //ключ
a:array[1..3,1..16] of integer =(
(133,181,139,46,147,183,62,82,76,53,124,65,154,223 ,219,237), // номера зашифрованных файлов в шопе они выглядят так :|133|181|139.... (132,176,134,43,148,183,60,83,75,55,120,67,155,208 ,208,231),
(130,181,140,45,148,182,58,82,76,48,118,71,153,216 ,210,0));
// сам код раскриптовки
var
x,y,l,i,j,k:integer;
sbox,rc4key:array[0..255] of integer;
Procedure Init;
Begin
x:=0; y:=0;
for i:=0 to 255 do
begin
sbox[i]:=i;
rc4key[i]:=ord(strPwd[(i mod length(strPwd))+1]);
end;
k:=0;
for i:=0 to 255 do
begin
k:=(k+sbox[i]+rc4key[i]) mod 256;
j:=sbox[i];
sbox[i]:=sbox[k];
sbox[k]:=j;
end;
End;
begin
writeln;writeln;writeln;writeln;writeln;writeln;
FOR l:=1 to 3 do
Begin
Init;
WriteLn;
for i:=1 to 16 do
Begin
x:=(x+1) mod 256;
y:=(y+sbox[x]) mod 256;
k:=sbox[x];sbox[x]:=sbox[y];sbox[y]:=k;
j:=(sbox[x]+sbox[y]) mod 256;
write(chr(a[l,i] xor sbox[j]));
End;
End;