📄 test.pas
字号:
unit Test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons, Grids, DBGrids;
type
TTestForm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
Panel4: TPanel;
Label25: TLabel;
Label33: TLabel;
Edit18: TEdit;
Button6: TButton;
Panel5: TPanel;
Label26: TLabel;
Label34: TLabel;
Button7: TButton;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
Label3: TLabel;
Label5: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Label16: TLabel;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
Panel6: TPanel;
Label35: TLabel;
Label6: TLabel;
Label11: TLabel;
Button8: TButton;
Edit6: TEdit;
Edit13: TEdit;
Panel11: TPanel;
Label31: TLabel;
Label36: TLabel;
Label7: TLabel;
Label8: TLabel;
Label10: TLabel;
Label38: TLabel;
Edit23: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Panel10: TPanel;
Label30: TLabel;
Label40: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Edit22: TEdit;
Button11: TButton;
Edit11: TEdit;
Edit12: TEdit;
Edit14: TEdit;
Panel9: TPanel;
Label29: TLabel;
Label39: TLabel;
Label9: TLabel;
Edit20: TEdit;
Button9: TButton;
Edit10: TEdit;
Panel8: TPanel;
Label41: TLabel;
Label15: TLabel;
Button12: TButton;
Edit15: TEdit;
Panel1: TPanel;
Panel2: TPanel;
Label17: TLabel;
Label19: TLabel;
Label21: TLabel;
Edit16: TEdit;
Edit19: TEdit;
Edit24: TEdit;
Label18: TLabel;
Label20: TLabel;
Edit17: TEdit;
Edit21: TEdit;
BitBtn3: TBitBtn;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label27: TLabel;
Label28: TLabel;
Label32: TLabel;
ll: TMemo;
Label42: TLabel;
Label43: TLabel;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
Panel12: TPanel;
Button13: TButton;
Memo6: TMemo;
Label44: TLabel;
Panel3: TPanel;
Button14: TButton;
Memo7: TMemo;
Label45: TLabel;
Panel7: TPanel;
Button10: TButton;
Memo8: TMemo;
Label46: TLabel;
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure PageControl1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
TestForm: TTestForm;
implementation
uses aesunit, TestUnit;
{$R *.dfm}
//*************************************************************************************************************
//*************************************************************************************************************
procedure TTestForm.Button6Click(Sender: TObject);
var
times : integer;
begin
if PKeyLicence='' then BitBtn3Click(Sender);
times := StrToInt (Edit18.Text);
if (times > 100000) then
begin
ShowMessage ('对不起,你输入的变化范围超界');
exit;
end;
if TestUseKeyWord(PKeyLicence, PAllotLicence, Edit2.Text, Edit1.Text, times)
then Showmessage('在KeyWord的变化测试范围内Key值唯一,Test over!')
else ShowMessage('在测试范围内Key值不唯一,测试结果在TestKeyWordToKey.txt中!');
end;
procedure TTestForm.Button7Click(Sender: TObject);
var
times : integer;
begin
times := StrToInt (Edit5.Text);
if (times > 100000) then
begin
ShowMessage ('对不起,你输入的变化范围超界');
exit;
end;
if TestUseMeterID(PKeyLicence, PAllotLicence, Edit4.Text, Edit3.Text, times)
then showMessage ('在MeterID的变化范围内Key值唯一,Test over!')
else ShowMessage('在MeterID的变化范围内Key值不唯一,测试结果在TestMeterIDToKey.txt文件中!');
end;
procedure TTestForm.Button8Click(Sender: TObject);
begin
if TestDynamicKeyUseNumber (Edit13.Text, Edit6.Text)
then showMessage ('售电次数在0--99999范围内变化,Dkey值唯一,Test over!')
else ShowMessage('售电次数在0--99999范围内变化,Dkey值不唯一,测试结果在TestDynamicKeyUseNumber.txt文件中!');
end;
procedure TTestForm.Button12Click(Sender: TObject);
var
Beginning, Ending : TDateTime;
hh : TTimeStamp;
Between : String;
Plaintext, Key : string;
i, l1 : integer;
F : TextFile;
begin
//str := TimeToStr (Beginning);
l1:=StrToInt(Edit15.Text);
if ((l1=12) or (l1=16) or (l1=20)) then
begin
// Memo5.Text := '';
Plaintext := Edit19.Text;
Key := Edit21.Text;
AssignFile (F, 'Time'+Edit15.Text+'.txt');
Rewrite (F);
writeln (F, 'Encoding Time is');
Beginning := Time;
For i := 1 To 1000 do Between := aes(copy(Plaintext, 1,l1), copy(Key,1,32), 9);
Ending := Time;
Beginning := Ending - Beginning;
hh := DateTimeToTimeStamp (Beginning);
Between := IntToStr (hh.Time);
writeln (F, Between + 'ms');
//showMessage ('加密计算1000次所用时间'+ Between +' ms');
Memo5.Lines.Add('');
Memo5.Lines.add ('加密计算1000次所用时间'+ Between +' ms');
writeln (F, 'Decoding Time is');
Beginning := Time;
For i := 1 To 1000 do Between := InAES(copy(Plaintext,1,l1), copy(Key,1,32), 9);
Ending := Time;
Between := IntToStr (hh.Time);
Beginning := Ending - Beginning;
hh := DateTimeToTimeStamp (Beginning);
Between := IntToStr (hh.Time);
writeln (F, Between + ' ms per 1000 times');
//showMessage ('解密计算1000次所用时间' + Between + ' ms');
Memo5.Lines.add ('解密计算1000次所用时间'+ Between +' ms');
//测试加密解密1000次时间
writeln (F, 'Encoding and Decoding Time is');
Beginning := Time;
For i := 1 To 1000 do
begin
Between := aes(copy(Plaintext, 1,l1), copy(Key,1,32), 9);
Between := InAES(copy(Plaintext,1,l1), copy(Key,1,32), 9);
end;
Ending := Time;
Between := IntToStr (hh.Time);
Beginning := Ending - Beginning;
hh := DateTimeToTimeStamp (Beginning);
Between := IntToStr (hh.Time);
writeln (F, Between + ' ms per 1000 times');
closeFile (F);
end;
//showMessage ('加密解密计算1000次所用时间'+Between+' ms');
Memo5.Lines.add ('加密解密计算1000次所用时间'+ Between +' ms');
Memo5.Lines.add ('Test over!');
end;
procedure TTestForm.Button9Click(Sender: TObject);
var
Plaintext : String;
begin
Plaintext := Edit10.Text;
if Plaintext = '' then
begin
showMessage ('校验部分的明文不能为空');
exit;
end;
If TestHashAndPlaintext (Plaintext, Length (Plaintext), StrToInt(Edit20.Text))
Then showMessage ('Hash函数对校验部分解密的值唯一,Test over!')
Else showMessage ('Hash函数对校验部分解密的值不唯一,测试结果在明文长度+TestHash.txt!');
end;
procedure TTestForm.Button13Click(Sender: TObject);
var
TempPlaintext, TempKey : String;
F : TextFile;
s1,s2,s3,s4,s5:string;
begin
TempPlaintext := Copy (Edit7.Text, 1, StrToInt(Edit9.Text));
if ( (Length(TempPlaintext) <> 12) And (Length(TempPlaintext) <> 16) And
(Length(TempPlaintext) <> 20)) then
begin
showMessage ('明文长度不对');
exit;
end;
TempKey := Copy (Edit8.Text, 1, 32);
PlaintextAffectEncryption (TempPlaintext, TempKey, 15, StrToInt(Edit23.Text));
showMessage ('Test over!');
AssignFile (F, 'Plaintext affect the Encryption'+IntToStr(Length(TempPlaintext))+'.txt');
Memo6.Lines.Add('');
Reset (F);
readln(F,s1,s2,s3,s4,s5);
Memo6.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
readln(F,s1,s2,s3,s4,s5);
Memo6.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
while (not Eof(F)) do
begin
readln(F,s1,s2,s3,s4,s5);
Memo6.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
end;
CloseFile(F);
end;
procedure TTestForm.Button11Click(Sender: TObject);
var
TempKey, TempPlaintext: String;
F : TextFile;
s1,s2,s3,s4,s5:string;
begin
//TempEncryption := Edit9.Text;
TempPlaintext := Copy (Edit11.Text, 1, StrToInt(Edit14.Text));
if ( (Length(TempPlaintext) <> 12) And (Length(TempPlaintext) <> 16) And (Length(TempPlaintext) <> 20)) then
begin
showMessage ('明文长度不对');
exit;
end;
TempKey := Copy (Edit12.Text, 1, 32);
testBestRoundsForDecoding (TempPlaintext, TempKey, 15, StrToInt (Edit22.Text));
showMessage ('Test over!');
AssignFile (F, 'Encryption affect Plaintext'+IntToStr(Length(TempPlaintext))+'Decoding'+'.txt');
Memo3.Lines.Add('');
Reset (F);
readln(F,s1,s2,s3,s4,s5);
Memo3.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
readln(F,s1,s2,s3,s4,s5);
Memo3.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
while (not Eof(F)) do
begin
readln(F,s1,s2,s3,s4,s5);
Memo3.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
end;
CloseFile(F);
end;
procedure TTestForm.Button14Click(Sender: TObject);
var
TempPlaintext, TempKey : String;
F : TextFile;
s1,s2,s3,s4,s5 : String;
begin
TempPlaintext := Copy (Edit7.Text, 1, StrToInt(Edit9.Text));
if ( (Length(TempPlaintext) <> 12) And (Length(TempPlaintext) <> 16) And
(Length(TempPlaintext) <> 20)) then
begin
showMessage ('明文长度不对');
exit;
end;
TempKey := Copy (Edit2.Text, 1, 32);
KeyAffectEncryption (TempPlaintext, TempKey, 15, StrToInt(Edit23.Text));
showMessage ('Test over!');
AssignFile (F, 'Key affect the Encryption'+IntToStr(Length(TempPlaintext))+'.txt');
Memo7.Lines.Add('');
Reset (F);
readln(F,s1,s2,s3,s4,s5);
Memo7.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
readln(F,s1,s2,s3,s4,s5);
Memo7.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
while (not Eof(F)) do
begin
readln(F,s1,s2,s3,s4,s5);
Memo7.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
end;
CloseFile(F);
end;
procedure TTestForm.Button10Click(Sender: TObject);
var
TempPlaintext, TempKey : String;
F : TextFile;
s1,s2,s3,s4,s5 : String;
begin
TempPlaintext := Copy (Edit7.Text, 1, StrToInt(Edit9.Text));
if ( (Length(TempPlaintext) <> 12) And (Length(TempPlaintext) <> 16) And (Length(TempPlaintext) <> 20)) then
begin
showMessage ('明文长度不对');
exit;
end;
TempKey := Copy (Edit2.Text, 1, 32);
testBestRounds (TempPlaintext, TempKey, 15, StrToInt(Edit23.Text));
showMessage ('Test over!');
AssignFile (F, 'Diffusion Rate of Plaintext'+IntToStr(Length(TempPlaintext))+'.txt');
Memo8.Lines.Add('');
Reset (F);
readln(F,s1,s2,s3,s4,s5);
Memo8.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
readln(F,s1,s2,s3,s4,s5);
Memo8.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
while (not Eof(F)) do
begin
readln(F,s1,s2,s3,s4,s5);
Memo8.Lines.add(s1+' '+s2+' '+s3+' '+s4+' '+s5);
end;
CloseFile(F);
end;
procedure TTestForm.BitBtn3Click(Sender: TObject);
var
len : integer;
Key, HashPlaintext : String;
l1,l2:integer;
begin
//Random (StrToInt(copy(Edit17.Text,1,10)));
PKeyLicence := '';
PAllotLicence := '';
for len := 1 To 255 do
begin
PKeyLicence := PKeyLicence + IntToStr(Random (10));
end;
for len := 1 To 255 do
PAllotLicence := PAllotLicence + IntToStr(Random(10));
//这里将分配密钥,并且加密
Key := KeyDistribution (PKeyLicence, PAllotLicence, Edit16.Text, Edit17.Text);
Edit6.Text := Key;
//校验
l1:=StrToInt(Edit24.Text);
if l1=12 then
begin
l2:=l1-6;
HashPlaintext := AES(Copy(Edit19.Text,1,6),Copy(Edit19.Text,7,6),2)+copy(Edit19.Text,7,l2);
end
else if ((l1=16) or (l1=20)) then
begin
l2:=l1-8;
HashPlaintext:=AES(Copy(Edit19.Text,1,8),Copy(Edit19.Text,9,l2),2)+copy(Edit19.Text,9,l2);
end;
if ((l1=12) or (l1=16) or (l1=20)) then
begin
Edit11.Text := aes(copy(HashPlaintext, 1,l1), copy(Edit21.Text,1,32), 9); //Rounds(Edit1.Text, 12, Edit3.Text,0);
//Edit9.Text:=Edit3.Text;
end;
//将结果送到不同的文本框中
Edit10.Text := HashPlaintext;
Edit2.Text := Edit16.Text;
Edit4.Text := Edit16.Text;
Edit13.Text := Edit16.Text;
Edit1.Text := Edit17.Text;
Edit3.Text := Edit17.Text;
Edit7.Text := Edit19.Text;
Edit8.Text := Edit21.Text;
Edit12.Text := Edit21.Text;
Edit9.Text := Edit24.Text;
Edit14.Text := Edit24.Text;
Edit15.Text := Edit24.Text;
end;
procedure TTestForm.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
If (PageControl1.ActivePage = TabSheet1) Then
Begin
TabSheet1.Highlighted := True;
TabSheet2.Highlighted := False;
TabSheet3.Highlighted := False;
TabSheet4.Highlighted := False;
TabSheet5.Highlighted := False;
TabSheet6.Highlighted := False;
End;
If (PageControl1.ActivePage = TabSheet2) Then
Begin
TabSheet1.Highlighted := False;
TabSheet2.Highlighted := True;
TabSheet3.Highlighted := False;
TabSheet4.Highlighted := False;
TabSheet5.Highlighted := False;
TabSheet6.Highlighted := False;
End;
If (PageControl1.ActivePage = TabSheet3) Then
Begin
TabSheet1.Highlighted := False;
TabSheet2.Highlighted := False;
TabSheet3.Highlighted := True;
TabSheet4.Highlighted := False;
TabSheet5.Highlighted := False;
TabSheet6.Highlighted := False;
End;
If (PageControl1.ActivePage = TabSheet4) Then
Begin
TabSheet1.Highlighted := False;
TabSheet2.Highlighted := False;
TabSheet3.Highlighted := False;
TabSheet4.Highlighted := True;
TabSheet5.Highlighted := False;
TabSheet6.Highlighted := False;
End;
If (PageControl1.ActivePage = TabSheet5) Then
Begin
TabSheet1.Highlighted := False;
TabSheet2.Highlighted := False;
TabSheet3.Highlighted := False;
TabSheet4.Highlighted := False;
TabSheet5.Highlighted := True;
TabSheet6.Highlighted := False;
End;
If (PageControl1.ActivePage = TabSheet6) Then
Begin
TabSheet1.Highlighted := False;
TabSheet2.Highlighted := False;
TabSheet3.Highlighted := False;
TabSheet4.Highlighted := False;
TabSheet5.Highlighted := False;
TabSheet6.Highlighted := True;
End;
end;
procedure TTestForm.FormCreate(Sender: TObject);
begin
PageControl1.ActivePage := TabSheet1;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -