Показать сообщение отдельно
  #3  
Старый 28.05.2011, 18:26
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию Простая процедура шифрования

Здесь одно из великого множества возможных решений.
Процедуры используют для шифрования метод побитового сложения по модулю 2 с некоторым кодовым словом (здесь это C[0..63])
Метод широко извкестен, его криптостойкость сильно зависит от длины кодового слова. Эту длину следует выбирать большей чем длина самого сообщения.
Метод обратим. Дешифровка осуществляется повторным применением этой же функции к зашифрованному сообщению.

Код:
const
c:array[0..63] of byte=(                 //шифр
$7A,$FD,$24,$34,$12,$6B,$1E,$F0,$4C,$13,$EC,$CC,$63,$5A,$59,$E3,
$13,$87,$A7,$62,$B8,$96,$84,$3C,$4A,$5D,$B0,$E6,$86,$78,$9A,$3C,
$C9,$C6,$BD,$E3,$6A,$6B,$91,$C7,$AB,$94,$4D,$94,$76,$76,$E3,$3D,
$88,$4B,$DA,$FF,$CD,$48,$F9,$60,$F4,$BB,$EB,$28,$93,$E1,$53,$4E
);



{--------шифровка-дешифровка--------}
function CodeStr(s:string):string;
var
n:integer;
begin
for n:=1 to Length(s) do
    s[n]:=char(Ord(s[n]) XOR c[n MOD SizeOf(c)]);
CodeStr:=s;
end;

{--------шифровка-дешифровка--------}
procedure CodeStr2(var Pw;Leng:integer);
var
n:integer;
P:^byte;
begin
P:=@Pw;
for n:=0 to Leng-1 do
    begin
    P^:=P^ XOR c[n MOD SizeOf(c)];
    inc(P);
    end;
end;
Ответить с цитированием