?? u_crypt.pas
字號:
unit U_Crypt;
interface
USES
Classes, SysUtils;
const
C1 = 52845; //此二常量用于生成隨機數(shù)
C2 = 22719;
SA:array[0..61] of char=
('0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
function Encrypt( S: String; Key: Word): String; //加密函數(shù)聲明
function Decrypt( S: String; Key: Word): String; //解密函數(shù)聲明
function Encrypt2( S: String; Key: Word): String; //加密函數(shù)2聲明
function Decrypt2( S: String; Key: Word): String; //解密函數(shù)2聲明
implementation
function Encrypt( S: String; Key: Word): String;
var
I: Integer;
j: Integer;
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; //產(chǎn)生下一個密鑰
end;
s:=Result;
Result:='';
for i:=1 to length(s) do
begin
j:=Integer(s[i]); //提取字符 ord(strtoint(s[i]));
//j := ord(s[i]);
Result:=Result + Char(65+(j div 26))+Char(65+(j mod 26)); //將字符轉(zhuǎn)化為兩個字母保存
end;
end;
function Decrypt( S: String; Key: Word): String;
var
I: Integer;
j: Integer;
begin
result:='';
for i:=1 to (length(s) div 2) do //將字符串兩個字母一組進行處理
begin
j:=(Integer(s[2*i-1])-65)*26; //將兩個字母重新轉(zhuǎn)化為一個字符
j:=j+(Integer(s[2*i])-65);
result:=result + Char(j); //追加字符,還原字符串
end;
s:=result; //保存中間結(jié)果
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;
function Encrypt2( S: String; Key: Word): String;
var
I: Integer;
j: Integer;
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; //產(chǎn)生下一個密鑰
end;
s:=Result;
Result:='';
for i:=1 to length(s) do
begin
j:=Integer(s[i]); //提取字符
Result:=Result + sa[j div 62]+sa[j mod 62]; //將字符轉(zhuǎn)化為兩個字母保存
end;
end;
function Decrypt2( S: String; Key: Word): String;
var
I: Integer;
j: Integer;
begin
result:='';
for i:=1 to (length(s) div 2) do //將字符串兩個字母一組進行處理
begin
j:=(pos(s[2*i-1],sa)-1)*62; //將兩個字符重新轉(zhuǎn)化為一個字符
j:=j+pos(s[2*i],sa)-1;
result:=result + char(j); //追加字符,還原字符串
end;
s:=result; //保存中間結(jié)果
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.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -