delphi字符串加密解密


本文整理自网络,侵删。

 //加密函数
Function EncrypKey(Src: String; Key: String): string;
var
idx: integer;
KeyLen: integer;
KeyPos: integer;
offset: integer;
dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
Range: integer;

begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'Think Space';
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range := 256;

Randomize;
offset := Random(Range);
dest := format('%1.2x', [offset]);
for SrcPos := 1 to Length(Src) do
begin
SrcAsc := (Ord(Src[SrcPos]) + offset) MOD 255;
if KeyPos < KeyLen then
KeyPos := KeyPos + 1
else
KeyPos := 1;
SrcAsc := SrcAsc xor ord(Key[KeyPos]);
dest := dest + format('%1.2x', [SrcAsc]);
offset := SrcAsc;
end;
Result := dest;
end;

// 解密函数
Function UncrypKey(Src: String; Key: String): string;
var
idx: integer;
KeyLen: integer;
KeyPos: integer;
offset: integer;
dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
Range: integer;

begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'Think Space';
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range := 256;
offset := StrToInt('$' + copy(Src, 1, 2));
SrcPos := 3;
repeat
SrcAsc := StrToInt('$' + copy(Src, SrcPos, 2));
if KeyPos < KeyLen Then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor ord(Key[KeyPos]);
if TmpSrcAsc <= offset then
TmpSrcAsc := 255 + TmpSrcAsc - offset
else
TmpSrcAsc := TmpSrcAsc - offset;
dest := dest + chr(TmpSrcAsc);
offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Src);
Result := dest;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := EncrypKey(Edit1.Text, stringkey);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit3.Text := UncrypKey(Edit2.Text, stringkey)

end;

procedure TForm1.FormShow(Sender: TObject);
begin
stringkey := '11010110';
end;

end.

相关阅读 >>

Delphi gridpanel percent百分比设置

Delphi 创建文件夹并打开

Delphi 获取分解时间日期的年月日

Delphi 四舍五入保留一位或两位小数

Delphi 跨平台的,在fmx中读取icon文件的每一帧到bitmap

Delphi 如何判断当前网卡是物理网卡

Delphi webbrowser1 网页提交按钮执行点击事件

Delphi d10.x 在安卓app开发中使用jar包的注意事项

Delphi date 返回当前的日期

Delphi xe7使用本身的md5单元进行字符串加密

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...