![]()
1 unit Unit1;
2
3 interface
4
5 uses
6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
8
9 type
10 TForm1 = class(TForm)
11 LabeledEdit1: TLabeledEdit;
12 LabeledEdit2: TLabeledEdit;
13 LabeledEdit3: TLabeledEdit;
14 Button1: TButton;
15 Button2: TButton;
16 Button3: TButton;
17 procedure Button1Click(Sender: TObject);
18 procedure Button2Click(Sender: TObject);
19 private
20 { Private declarations }
21 public
22 { Public declarations }
23 end;
24
25 var
26 Form1: TForm1;
27
28 implementation
29
30 {$R *.dfm}
31 var
32
33 XorKey: array[0..7] of Byte = ($AB, $CD, $E1, $0A, $1B, $2C, $3D, $4E); //加密字符 16进制
34
35 function Enc(str: string): string; //加密函数
36 var
37 i, j: Integer;
38 begin
39 Result := '';
40 j := 0;
41 for i := 1 to Length(str) do
42 begin
43 Result := Result + IntToHex(Byte(str[i]) xor XorKey[j], 2); //Byte(str[i]):取 str[i]的Ascll 后与 XorKey[j]异或 取2位 再转换成16进制
44 j := (j + 1) mod 8;
45 end;
46 end;
47
48
49 procedure TForm1.Button1Click(Sender: TObject);
50 begin
51 LabeledEdit2.Text:= Enc(LabeledEdit1.Text);
52
53 end;
54
55
56 function Dec(str: string): string; //解密函数
57 var
58 i, j: Integer;
59 begin
60 Result := '';
61 j := 0;
62 for i := 1 to Length(str) div 2 do
63 begin
64 Result := Result + Char(StrToInt('$' + Copy(str, i * 2 - 1, 2)) xor
65 XorKey[j]);
66 j := (j + 1) mod 8;
67 end;
68 end;
69
70 procedure TForm1.Button2Click(Sender: TObject);
71 begin
72 LabeledEdit3.Text:= Dec(LabeledEdit2.Text);
73 end;
74
75 end.