📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Mask, DBCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
type
PWord = ^word;
TIDEAData = record
InitBlock: array[0..7] of byte; { initial IV }
LastBlock: array[0..7] of byte; { current IV }
EK: array[0..51] of word;
DK: array[0..51] of word;
end;
procedure IDEAInit(var Data: TIDEAData; Key: pointer; Len: integer; IV:
pointer); stdcall; far external 'IDEACrypt.dll';
procedure IDEABurn(var Data: TIDEAData); stdcall; far external 'IDEACrypt.dll';
procedure IDEAEncryptCFB(var Data: TIDEAData; InData, OutData: pointer; Len:
integer); stdcall; far external 'IDEACrypt.dll';
procedure IDEADecryptCFB(var Data: TIDEAData; InData, OutData: pointer; Len:
integer); stdcall; far external 'IDEACrypt.dll';
procedure IDEAReset(var Data: TIDEAData); stdcall; far external 'IDEACrypt.dll';
implementation
{$R *.dfm}
const
IDEA_Key: array[0..15] of byte =
($00, $01, $00, $02, $00, $03, $00, $04, $00, $05, $00, $06, $00, $07, $00,
$08);
function bus_Decrypt(value: string): string;
var
KeyData: TIDEAData;
InData: array[0..128] of char;
OutData: array[0..128] of char;
begin
ZeroMemory(@InData, 128 + 1);
ZeroMemory(@OutData, 128 + 1);
IDEAInit(KeyData, @IDEA_Key, Sizeof(IDEA_Key), nil);
StrCopy(@InData, PChar(value));
IDEADecryptCFB(KeyData, @InData, @OutData, 128);
IDEABurn(KeyData);
Result := OutData;
end;
function bus_Encrypt(value: string): string;
var
KeyData: TIDEAData;
InData: array[0..128] of char;
OutData: array[0..128] of char;
begin
ZeroMemory(@InData, 128 + 1);
ZeroMemory(@OutData, 128 + 1);
IDEAInit(KeyData, @IDEA_Key, Sizeof(IDEA_Key), nil);
StrCopy(@InData, PChar(value));
IDEAEncryptCFB(KeyData, @InData, @OutData, 128);
IDEABurn(KeyData);
Result := OutData;
end;
procedure WriteLog(wstr: string; filestr: string);
var
str: string;
FileHandle: Integer;
begin
str := ExtractFilePath(application.ExeName) + filestr;
if (not FileExists(str)) then
FileHandle := FileCreate(str)
else
FileHandle := fileopen(str, fmOpenWrite);
FileWrite(FileHandle, PChar(wstr)^, strlen(pchar(wstr)));
Fileclose(fileHandle);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
mm : TStringStream;
begin
Edit2.Text := bus_Encrypt(Edit1.Text);
if (FileExists('crypt.txt')) then
DeleteFile('crypt.txt');
WriteLog(Edit2.Text, 'crypt.txt');
Edit3.Text := bus_Decrypt(Edit2.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
str: string;
mm : TStringStream;
pch : pchar;
begin
mm:=TStringStream.Create(Edit2.Text);
mm.Position := 0;
with ADOTable1 do
begin
Edit;
TBlobField(FieldByName('RegDate')).LoadFromStream(mm);
Post;
end;
mm.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -