interface
uses
Classes;
const
C1 = 52845;
C2 = 22719;
function Encrypt(S: string): string;
function Decrypt(S: string): string;
implementation
function Encrypt(S: string): string;
var
i: Integer;
j: Integer;
Key: Word;
begin
Result := S;
for i := 1 to Length(S) do
begin
Result[i] := char(byte(s[i]) xor (Key shr 8));
Key := (byte(Result[I]) + Key) * C1 + C2;
end;
s := Result;
Result := '';
for i := 1 to Length(s) do
begin
j := Integer(s[i]);
Result := Result + Char(65 + (j div 26)) + char(65 + (j mod 26));
end;
end;
function Decrypt(S: string): string;
var
i: Integer;
j: Integer;
Key: Word;
begin
result := '';
for i := 1 to (Length(s) div 2) do
begin
j := (Integer(s[2 * i - 1]) - 65) * 26;
j := j + (Integer(s[2 * i]) - 65);
result := result + Char(j);
end;
s := Result;
for i := 1 to Length(S) do
begin
Result[i] := char(byte(S[I]) xor (Key shr 8));
Key := (byte(S[I]) + Key) * C1 + C2;
end;
end;
end.
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
function pass(password:string):string;
{ Private declarations }
public
ss:string;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.pass(password: string): string; //加密函数
var
S,local,cvtp:string;
K:integer;
begin
if trim(password)='' then
result:=#08
else
begin
cvtp:='';
FOR K:=1 TO length(password) do
cvtp:=chr(ord(password[K])+ K MOD 3*K+76)+cvtp
end;
result:=cvtp;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ss:=pass(edit1.Text); // 保存密码
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if pass(edit1.Text)=ss then //验证密码
showmessage('ok')
else
showmessage('no');
end;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
function pass(password:string):string;
{ Private declarations }
public
ss:string;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.pass(password: string): string;
var
S,local,cvtp:string;
K:integer;
begin
if trim(password)='' then
result:=#08
else
begin
cvtp:='';
FOR K:=1 TO length(password) do
cvtp:=chr(ord(password[K])+ K MOD 3*K+76)+cvtp
end;
result:=cvtp;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ss:=pass(edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if pass(edit1.Text)=ss then
showmessage('密码正确')
else
showmessage('密码错误');
end;