![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шифрование [D5, Win95/98, WinME]
ivlex © (2002-06-29 10:30:00)Нужно зашифровать строку типа string. Просьба помочь кодом.
MARcoDEN (2002-06-29 20:13:00) [1]Вот мой пример шифрования и дешифрования текста с использованием пароля на WinAPI:
Процедура шифрования текста, расположенного в hEdit, используя пароль hPW
procedure Encrypt;
var
x,i,
sText,sPW: Integer;
Text,PW: PChar;
begin
sText:=GetWindowTextLength(hEdit)+1;
sPW:=GetWindowTextLength(hPW)+1;
GetMem(Text,sText);
GetMem(PW,sPW);
GetWindowText(hEdit,Text,sText);
GetWindowText(hPW,PW,sPW);
x:=0; // initialize count
for i:=0 to sText-2 do
begin
Text[i]:=Chr(Ord(Text[i])+Ord(PW[x]));
Inc(x);
if x=(sPW-1)then x:=0;
end;
SetWindowText(hEdit,Text);
FreeMem(Text);
FreeMem(PW);
end;
Процедура дешифрования текста
procedure Decrypt;
var
x,i,
sText,sPW: Integer;
Text,PW: PChar;
begin
sText:=GetWindowTextLength(hEdit)+1;
sPW:=GetWindowTextLength(hPW)+1;
GetMem(Text,sText);
GetMem(PW,sPW);
GetWindowText(hEdit,Text,sText);
GetWindowText(hPW,PW,sPW);
x:=0; // initialize count
for i:=0 to sText-2 do
begin
Text[i]:=Chr(Ord(Text[i])-Ord(PW[x]));
Inc(x);
if x=(sPW-1)then x:=0;
end;
SetWindowText(hEdit,Text);
FreeMem(Text);
FreeMem(PW);
end;
Danger (2002-06-29 14:28:00) [2]var
s: string;
procedure Code(var text: string; password: string;
decode: boolean);
var
i, PasswordLength: integer;
sign: shortint;
begin
PasswordLength := length(password);
if PasswordLength = 0 then Exit;
if decode
then sign := -1
else sign := 1;
for i := 1 to Length(text) do
text[i] := chr(ord(text[i]) + sign *
ord(password[i mod PasswordLength + 1]));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
s := Memo1.Text;
code(s, Edit1.Text, false);
Memo1.Text := s;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
code(s, Edit1.Text, true);
Memo1.Text := s;
end;
Anatoly Podgoretsky (2002-06-29 12:16:00) [3]S[i] := Char(Byte(S[i]) xor XX)
alena.svt (2002-06-29 12:02:00) [4]Сверху ссылочка !
UBPFD- Единая база данных....
Вот на нее и кликни.