Помогите с кодом
1526
3
А вот код программы на 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;
CoolUser
veteran
А вот код программы на TP, сделав отладку, и не могу найти ошибку, постоянно чио-то вылезает:Чиго вылезает то? На стадии компиляции? Или комплируется нормально, но ведет прога себя неадекватно?
CoolUser
veteran
Не пожалел времени, вставил код в Дельфи.
У тебя матрица (двумерный массив) a имеет размерность по декларации 3x16, по значениям инициализации 2x16. Конечно ругаться будет. Надо в таком случае:
У тебя матрица (двумерный массив) a имеет размерность по декларации 3x16, по значениям инициализации 2x16. Конечно ругаться будет. Надо в таком случае:
a:array[1..2,1..16] of integer =(Дальше не полез, вроде прога запускается и чего-то выводит.
Я тоже не поленился и вставил в TP
То что написано, работать не может так имеется нестыковка типов.
Например присвоение
sbox:=i
где первое массив, второе - целое.
Ну и там также дальше.
То что написано, работать не может так имеется нестыковка типов.
Например присвоение
sbox:=i
где первое массив, второе - целое.
Ну и там также дальше.