⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 u_crypt.pas

📁 超级播放器 -- 软件特点 -- 功能齐全 操作简便 绿色环保
💻 PAS
字号:
unit U_Crypt;

interface
USES
    Classes;
const
     C1 = 52845;             //此二常量用于生成随机数
     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;   //加密函数声明
function Decrypt( S: String; Key: Word): String;   //解密函数声明
function Encrypt2( S: String; Key: Word): String;   //加密函数2声明
function Decrypt2( S: String; Key: Word): String;   //解密函数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;  //产生下一个密钥
 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; 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;   //将两个字母重新转化为一个字符
  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;
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;  //产生下一个密钥
 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]; //将字符转化为两个字母保存
 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;   //将两个字符重新转化为一个字符
  j:=j+pos(s[2*i],sa)-1;
  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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -