UnitExample.pas
上传用户:whyddz
上传日期:2010-02-05
资源大小:238k
文件大小:7k
源码类别:

破解

开发平台:

Delphi

  1. { *********************************************************************** }
  2. {                                                                         }
  3. { AES Interface Unit 加密算法接口演示程序                                 }
  4. {                                                                         }
  5. { 版权所有 (c) 2004 杨泽晖                                               }
  6. {                                                                         }
  7. { *********************************************************************** }
  8. unit UnitExample;
  9. interface
  10. uses
  11.   Windows, Messages, SysUtils, Classes, Forms, Controls, StdCtrls, AES,
  12.   ComCtrls, Dialogs, ExtCtrls;
  13. const
  14.   MsgInformation = '信息';
  15.   MsgError = '错误';
  16.   StrEncStrEmpty = '请输入要加密的字符串。';
  17.   StrDecStrEmpty = '请输入要解密的字符串。';
  18.   StrSrcFileNotExists = '要进行操作的源文件不存在。';
  19.   StrKeyBitMode = '%s 密匙支持的密码最大长度为 %d 个字符。';
  20.   StrOpraTime = '操作时间 : %d 毫秒';
  21.   StrEncrypting = '操作状态 : 正在加密...';
  22.   StrEncrypted = '操作状态 : 加密完成';
  23.   StrDecrypting = '操作状态 : 正在解密...';
  24.   StrDecrypted = '操作状态 : 解密完成';
  25. type
  26.   TFormAES = class(TForm)
  27.     btnEnc: TButton;
  28.     btnExit: TButton;
  29.     btnDec: TButton;
  30.     btnAbout: TButton;
  31.     PageControl: TPageControl;
  32.     TabSheet1: TTabSheet;
  33.     GroupBox1: TGroupBox;
  34.     memSrcStr: TMemo;
  35.     GroupBox2: TGroupBox;
  36.     memEncStr: TMemo;
  37.     GroupBox3: TGroupBox;
  38.     memDecStr: TMemo;
  39.     TabSheet2: TTabSheet;
  40.     TabSheet3: TTabSheet;
  41.     GroupBox4: TGroupBox;
  42.     GroupBox5: TGroupBox;
  43.     ledSrcFile: TLabeledEdit;
  44.     btnOpenFile: TButton;
  45.     btnSaveFile: TButton;
  46.     ledDstFile: TLabeledEdit;
  47.     Panel1: TPanel;
  48.     ledKey: TLabeledEdit;
  49.     lblKeyHint: TLabel;
  50.     cbKeyBit: TComboBox;
  51.     Label2: TLabel;
  52.     GroupBox6: TGroupBox;
  53.     lblTime: TLabel;
  54.     OpenDialog: TOpenDialog;
  55.     SaveDialog: TSaveDialog;
  56.     lblState: TLabel;
  57.     Label1: TLabel;
  58.     imAppIcon: TImage;
  59.     procedure btnDecClick(Sender: TObject);
  60.     procedure btnEncClick(Sender: TObject);
  61.     procedure btnAboutClick(Sender: TObject);
  62.     procedure btnExitClick(Sender: TObject);
  63.     procedure cbKeyBitSelect(Sender: TObject);
  64.     procedure btnOpenFileClick(Sender: TObject);
  65.     procedure btnSaveFileClick(Sender: TObject);
  66.     procedure FormCreate(Sender: TObject);
  67.   private
  68.     { Private declarations }
  69.   public
  70.     { Public declarations }
  71.   end;
  72. var
  73.   FormAES: TFormAES;
  74. implementation
  75. {$R *.DFM}
  76. procedure TFormAES.cbKeyBitSelect(Sender: TObject);
  77. begin
  78.   case cbKeyBit.ItemIndex of
  79.     0: ledKey.MaxLength := 16;
  80.     1: ledKey.MaxLength := 24;
  81.     2: ledKey.MaxLength := 32;
  82.   end;
  83.   lblKeyHint.Caption := Format(StrKeyBitMode, [cbKeyBit.Text, ledKey.MaxLength]);
  84. end;
  85. procedure TFormAES.btnEncClick(Sender: TObject);
  86. var
  87.   Start, Stop: Cardinal;
  88. begin
  89.   case PageControl.ActivePageIndex of
  90.     0: {  --  字符串加密  --  }
  91.       begin
  92.         if Length(memSrcStr.Text) > 0 then
  93.         begin
  94.           {  --  调用标准例程 EncryptString 加密字符串  --  }
  95.           case cbKeyBit.ItemIndex of
  96.             0: memEncStr.Text := EncryptString(memSrcStr.Text, ledKey.Text);
  97.                {  --  此处省略了 KeyBit的参数  KeyBit := kb128  -- }
  98.             1: memEncStr.Text := EncryptString(memSrcStr.Text, ledKey.Text, kb192);
  99.             2: memEncStr.Text := EncryptString(memSrcStr.Text, ledKey.Text, kb256);
  100.           end;
  101.         end else
  102.           MessageBox(Handle, StrEncStrEmpty, MsgInformation, MB_ICONINFORMATION);
  103.       end;
  104.     1: {  --  流加密  --  }
  105.       begin
  106.         MessageBox(Handle, '暂时没有流加密演示。', MsgInformation, MB_ICONINFORMATION);
  107.       end;
  108.     2: {  --  文件加密  --  }
  109.       begin
  110.         if FileExists(ledSrcFile.Text) then
  111.         begin
  112.           lblState.Caption := StrEncrypting;
  113.           Start := GetTickCount;
  114.           case cbKeyBit.ItemIndex of
  115.             0: EncryptFile(ledSrcFile.Text, ledDstFile.Text, ledKey.Text);
  116.              {  --  此处省略了 KeyBit的参数  KeyBit := kb128  -- }
  117.             1: EncryptFile(ledSrcFile.Text, ledDstFile.Text, ledKey.Text, kb192);
  118.             2: EncryptFile(ledSrcFile.Text, ledDstFile.Text, ledKey.Text, kb256);
  119.           end;
  120.           Stop := GetTickCount;
  121.           lblTime.Caption := Format(StrOpraTime, [Stop - Start]);
  122.           lblState.Caption := StrEncrypted;
  123.          end else
  124.           MessageBox(Handle, StrSrcFileNotExists, MsgError, MB_ICONERROR);
  125.       end;
  126.   end;
  127. end;
  128. procedure TFormAES.btnDecClick(Sender: TObject);
  129. var
  130.   Start, Stop: Cardinal;
  131. begin
  132.   case PageControl.ActivePageIndex of
  133.     0:
  134.       begin
  135.         if Length(memEncStr.Text) > 0 then
  136.         begin
  137.           {  --  调用标准例程 DecryptString 解密字符串  --  }
  138.           case cbKeyBit.ItemIndex of
  139.             0: memDecStr.Text := DecryptString(memEncStr.Text, ledKey.Text);
  140.              {  --  此处省略了 KeyBit的参数  KeyBit := kb128  -- }
  141.             1: memDecStr.Text := DecryptString(memEncStr.Text, ledKey.Text, kb192);
  142.             2: memDecStr.Text := DecryptString(memEncStr.Text, ledKey.Text, kb256);
  143.           end;
  144.         end else
  145.           MessageBox(Handle, StrDecStrEmpty, MsgInformation, MB_ICONINFORMATION);
  146.       end;
  147.     1: {  --  流解密  --  }
  148.       begin
  149.         MessageBox(Handle, '暂时没有流解密演示。', MsgInformation, MB_ICONINFORMATION);
  150.       end;
  151.     2: {  --  文件解密  --  }
  152.       begin
  153.         if FileExists(ledSrcFile.Text) then
  154.         begin
  155.           lblState.Caption := StrDecrypting;
  156.           Start := GetTickCount;
  157.           case cbKeyBit.ItemIndex of
  158.             0: DecryptFile(ledSrcFile.Text, ledDstFile.Text, ledKey.Text);
  159.              {  --  此处省略了 KeyBit的参数  KeyBit := kb128  -- }
  160.             1: DecryptFile(ledSrcFile.Text, ledDstFile.Text, ledKey.Text, kb192);
  161.             2: DecryptFile(ledSrcFile.Text, ledDstFile.Text, ledKey.Text, kb256);
  162.           end;
  163.           Stop := GetTickCount;
  164.           lblTime.Caption := Format(StrOpraTime, [Stop - Start]);
  165.           lblState.Caption := StrDecrypted;
  166.          end else
  167.           MessageBox(Handle, StrSrcFileNotExists, MsgError, MB_ICONERROR);
  168.       end;
  169.   end;
  170. end;
  171. procedure TFormAES.btnAboutClick(Sender: TObject);
  172. var
  173.   S: string;
  174. begin
  175.   S := 'AES 加密算法演示程序 v1.3' + #13 + #13 +
  176.     'Advanced Encryption Standard (AES)' + #13 +
  177.     'Copyright (c) 1998-2001 EldoS, Alexander Ionov.' + #13 + #13 +
  178.     'AES Interface Unit v1.3' + #13 +
  179.     'Copyright (c) 2004 Jorlen Young.' + #13 + #13 +
  180.     'Website:' + #13 +
  181.     '         http://jorlen.51.net/' + #13 +
  182.     '         http://mycampus.1155.net/' + #13 +
  183.     '         http://mycampus.ecoo.net/' + #13 +
  184.     '         http://mycampus.5500.org/' + #13 + #13 +
  185.     'Email: stanley_xfx@163.com';        
  186.   MessageBox(Handle, PChar(S), MsgInformation, MB_ICONINFORMATION);
  187. end;
  188. procedure TFormAES.btnExitClick(Sender: TObject);
  189. begin
  190.   Application.Terminate;
  191. end;
  192. procedure TFormAES.btnOpenFileClick(Sender: TObject);
  193. begin
  194.   with OpenDialog do
  195.   begin
  196.     if Execute then
  197.       ledSrcFile.Text := FileName;
  198.   end;
  199. end;
  200. procedure TFormAES.btnSaveFileClick(Sender: TObject);
  201. begin
  202.   with SaveDialog do
  203.   begin
  204.     if Execute then
  205.       ledDstFile.Text := FileName;
  206.   end;
  207. end;
  208. procedure TFormAES.FormCreate(Sender: TObject);
  209. begin
  210.   imAppIcon.Picture.Icon.Assign(Application.Icon);
  211. end;
  212. end.