📄 unit1.pas
字号:
unit Unit1;
interface
uses
AES, ElAES,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, ExtCtrls;
type
TfrmMain = class(TForm)
btnLoad: TButton;
btnEncrypt: TButton;
btnDecrypt: TButton;
mem: TMemo;
edtKey: TLabeledEdit;
cboKeyBit: TComboBox;
Label1: TLabel;
procedure btnLoadClick(Sender: TObject);
procedure btnEncryptClick(Sender: TObject);
procedure cboKeyBitSelect(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btnDecryptClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
fsm: TFileStream;
keybit: TKeyBit;
public
{ Public declarations }
end;
const
// 保存加密前的文件
SRCFILE = 'C:\aes\src.txt';
// 保存加密后的文件
DESTFILE = 'C:\aes\dest.txt';
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnLoadClick(Sender: TObject);
begin
mem.Lines.LoadFromStream(fsm);
end;
procedure TfrmMain.btnEncryptClick(Sender: TObject);
var
msm: TMemoryStream;
begin
if edtKey.Text = '' then
begin
edtKey.SetFocus;
Showmessage('input a key');
Exit;
end;
msm:= TMemoryStream.Create;
try
if not AES.EncryptStream(fsm, edtKey.Text, TStream(msm), keybit) then
begin
showmessage('encrypt error');
exit;
end;
msm.SaveToFile(DESTFILE);
finally
msm.Free;
end;
end;
procedure TfrmMain.btnDecryptClick(Sender: TObject);
var
src, dest: TMemoryStream;
begin
if edtKey.Text = '' then
begin
edtKey.SetFocus;
Showmessage('input key');
Exit;
end;
src:= TMemoryStream.Create;
dest:= TMemoryStream.Create;
try
src.LoadFromFile(DESTFILE);
if not Aes.DecryptStream(src, edtKey.Text, TStream(dest), keybit) then
begin
showmessage('decrypt error');
exit;
end;
mem.Lines.LoadFromStream(dest);
finally
src.Free;
dest.Free;
end;
end;
procedure TfrmMain.cboKeyBitSelect(Sender: TObject);
begin
edtKey.MaxLength:= 16 + 8 * cboKeyBit.ItemIndex;
case cboKeyBit.ItemIndex of
0: keybit:= kb128;
1: keybit:= kb192;
2: keybit:= kb256;
end;
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
if fsm <> nil then
fsm.Free;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
if not fileExists(SRCFILE) then
begin
showmessage('如果是第一次运行示例,请在C盘建立目录“AES”,'
+ '然后在该目录下建立文件“src.txt”,“dest.txt”用于示例。');
Application.Terminate;
Exit;
end;
fsm:= TFileStream.Create(SRCFILE, fmOpenRead);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -