Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Скремблер на Pascal (http://forum.oszone.net/showthread.php?t=57735)

fossil 09-12-2005 09:09 381250

Скремблер на Pascal
 
Привет! По заданию нужно организовать шифрование данных при помощи скремблера на Pascal.
http://www.bnti.ru/scripts/showart.a...=&tbl=&aid=521

fossil 12-12-2005 15:07 382241

Кстати, еще надо прогу использующая алгоритм шифрования TEA.
В инете ничего так и не нашел толкового.

fossil 14-12-2005 14:14 382986

Нашел процедуру для реализации алгоритма TEA:

Код:

type TLong2=array[0.. 1] of longint;
        TLong2x2=array[0.. 1] of TLong2;
const Delta=$9E3779B9;
var key:TLong2x2;
procedure EnCryptRouting(var data);
var y,z,sum:longint;
      a:byte;
begin
y:=TLong2(data)[0];
z:=TLong2(data)[1];
sum:=0;
for a:=0 to 31 do
begin
inc(sum,Delta);
inc(y,((z shl 4)+key[0,0]) xor (z+sum) xor ((z shr 5)+key[0,1]));
inc(z,((y shl 4)+key[1,0]) xor (y+sum) xor ((y shr 5)+key[1,1]));
end;
TLong2(data)[0]:=y;
TLong2(data)[1]:=z
end;


fossil 28-12-2005 07:28 387393

Полная программа использующая криптоалгоримт TEA:
Код:

Program tea;
Uses crt;
type TLong2=array[0..1] of longint;
    TLong2x2=array[0..1] of TLong2;
const Delta=$9E3779B9;
var key:TLong2x2;
    text:string;
procedure EnCrypt(var data);
var y,z,sum:longint;
    a:byte;
begin
y:=TLong2(data)[0];
z:=TLong2(data)[1];
sum:=0;
for a:=0 to 31 do
begin
inc(sum,Delta);
inc(y,((z shl 4)+key[0,0]) xor (z+sum) xor ((z shr 5)+key[0,1]));
inc(z,((y shl 4)+key[1,0]) xor (y+sum) xor ((y shr 5)+key[1,1]));
end;
TLong2(data)[0]:=y;
TLong2(data)[1]:=z;
end;

procedure DeCrypt(var data);
var y,z,sum:longint;
    a:byte;
begin
y:=TLong2(data)[0];
z:=TLong2(data)[1];
sum:=Delta shl 5;
for a:=0 to 31 do
begin
dec(z,((y shl 4)+key[1,1]) xor (y+sum) xor ((y shr 5)+key[1,0]));
dec(y,((z shl 4)+key[0,1]) xor (z+sum) xor ((z shr 5)+key[0,0]));
dec(sum,Delta);
end;
TLong2(data)[0]:=y;
TLong2(data)[1]:=z;
end;
Begin
clrscr;
write('Введите текст: ');
read(text);
EnCrypt(text);
writeln('Зашифрованный текст: ',text);
DeCrypt(text);
write('Расшифрованный текст: ',text);
end.



Время: 15:46.

Время: 15:46.
© OSzone.net 2001-