// XOR 加密/解密 function XorEncDec(AStr:String;Key:Byte):String; var i,n:Integer; begin n:=Length(AStr); SetLength(Result,n); for i:=1 to n do Result[i]:=Char(Byte(AStr[i]) xor Key); end; //加法加密 function AddEnc(AStr:String;Key:Byte):String; var i,n:Integer; begin n:=Length(AStr); SetLength(Result,n); for i:=1 to n do Result[i]:=Char(Byte(AStr[i])+Key); end; //加法解密 function AddDec(AStr:String;Key:Byte):String; var i,n:Integer; begin n:=Length(AStr); SetLength(Result,n); for i:=1 to n do Result[i]:=Char(Byte(AStr[i])-Key); end; 其中XorEncDec的加密/解密均为同一个过程,而加法加密、解密则需要两个过程配套使用。eg: procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text:=XorEncDec(Edit1.Text,123); //加密(Edit1中存放明文,Edit2存放密文) end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:=XorEncDec(Edit2.Text,123); //解密(Edit2存放密文,Edit1中存放解密的明文) end;
function XorEncDec(AStr:String;Key:Byte):String;
var
i,n:Integer;
begin
n:=Length(AStr);
SetLength(Result,n);
for i:=1 to n do
Result[i]:=Char(Byte(AStr[i]) xor Key);
end;
//加法加密
function AddEnc(AStr:String;Key:Byte):String;
var
i,n:Integer;
begin
n:=Length(AStr);
SetLength(Result,n);
for i:=1 to n do
Result[i]:=Char(Byte(AStr[i])+Key);
end;
//加法解密
function AddDec(AStr:String;Key:Byte):String;
var
i,n:Integer;
begin
n:=Length(AStr);
SetLength(Result,n);
for i:=1 to n do
Result[i]:=Char(Byte(AStr[i])-Key);
end; 其中XorEncDec的加密/解密均为同一个过程,而加法加密、解密则需要两个过程配套使用。eg:
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=XorEncDec(Edit1.Text,123); //加密(Edit1中存放明文,Edit2存放密文)
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:=XorEncDec(Edit2.Text,123); //解密(Edit2存放密文,Edit1中存放解密的明文)
end;