作者:admin 来源: 日期:2020/2/11 9:31:11 人气: 标签:
unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
const CKEY1 = 53761; CKEY2 = 32618;
function EncryptStr(const S :WideString; Key: Word): String;var i :Integer; RStr :RawByteString; RStrB :TBytes Absolute RStr;begin Result:= ''; RStr:= UTF8Encode(S); for i := 0 to Length(RStr)-1 do begin RStrB[i] := RStrB[i] xor (Key shr 8); Key := (RStrB[i] + Key) * CKEY1 + CKEY2; end; for i := 0 to Length(RStr)-1 do begin Result:= Result + IntToHex(RStrB[i], 2); end;end;
function DecryptStr(const S: String; Key: Word): String;var i, tmpKey :Integer; RStr :RawByteString; RStrB :TBytes Absolute RStr; tmpStr :string;begin tmpStr:= UpperCase(S); SetLength(RStr, Length(tmpStr) div 2); i:= 1; try while (i < Length(tmpStr)) do begin RStrB[i div 2]:= StrToInt('$' + tmpStr[i] + tmpStr[i+1]); Inc(i, 2); end;//delphitop.com except Result:= ''; Exit; end; for i := 0 to Length(RStr)-1 do begin tmpKey:= RStrB[i]; RStrB[i] := RStrB[i] xor (Key shr 8); Key := (tmpKey + Key) * CKEY1 + CKEY2; end; Result:= UTF8Decode(RStr);
end;
procedure TForm1.FormCreate(Sender: TObject);begincaption:=DecryptStr(EncryptStr('中国',100),100);end;
end.