123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- unit uEnCode;
- interface
- uses
- SysUtils, libc, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
- QDialogs, QStdCtrls, SQLite3, SQLiteTable3, uPublic, QButtons, QExtCtrls,
- QMenus;
- type
- TFrmEnCode = class(TForm)
- BitBtn1: TBitBtn;
- Edit1: TEdit;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Edit2: TEdit;
- Edit3: TEdit;
- BitBtn2: TBitBtn;
- procedure Button2Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure CRC_CPCC(var pucData: TResultByteArray; nLen: integer;var pCRC: string);
- procedure CALC_CODE();
- procedure BitBtn1Click(Sender: TObject);
- procedure BitBtn2Click(Sender: TObject);
- procedure Edit1KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure Edit2KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure Edit3KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- FrmEnCode: TFrmEnCode;
- fStream : TFILESTREAM;
- userDB : TSQLiteDatabase;
- userTB : TSQLiteTable;
- implementation
- uses DESCrypt;
- {$R *.xfm}
- procedure TFrmEnCode.Button2Click(Sender: TObject);
- begin
- close;
- end;
- procedure TFrmEnCode.FormCreate(Sender: TObject);
- begin
- edit1.SetFocus;
- end;
- procedure TFrmEnCode.CRC_CPCC(var pucData: TResultByteArray; nLen: integer;
- var pCRC: string);
- var
- CRC16Lo, CRC16Hi, CH, CL, SaveHi, SaveLo, i, j: byte;
- begin
- CRC16Lo := 0; // pCRC-(pCRC div 256)*256;
- CRC16Hi := 0; //(pCRC div 256);
- ch := $A0;
- cl := $01;
- for i := 0 to nLen - 1 do
- begin
- CRC16Lo := CRC16Lo xor (pucData[i]);
- for j := 0 to 7 do
- begin
- SaveHi := CRC16Hi;
- SaveLo := CRC16Lo;
- CRC16Hi := CRC16Hi shr 1;
- CRC16Lo := CRC16Lo shr 1;
- if (SaveHi and $01) = $01 then
- CRC16Lo := CRC16Lo or $80;
- if (SaveLo and $01) = $01 then
- begin
- CRC16Hi := CRC16Hi xor CH;
- CRC16Lo := CRC16Lo xor CL;
- end;
- end;
- end;
- pCRC := IntToHex(CRC16hi, 2) + IntToHex(CRC16Lo, 2);
- end;
- procedure TFrmEnCode.CALC_CODE();
- var
- AR: TResultByteArray;
- CRC: string;
- nCode: INTEGER;
- nTmp: INTEGER;
- _code: string;
- date: string;
- i: integer;
- C: array[1..4] of INTEGER;
- begin
- SetLength(ar, 10);
- ar[0] := $BD;
- ar[1] := $6E;
- ar[2] := $3F;
- ar[3] := $91;
- ar[4] := $4C;
- ar[5] := $2A;
- date := formatdatetime('yyyyMMdd', now);
- ar[6] := StrToInt('$' + copy(date, 1, 2));
- ar[7] := StrToInt('$' + copy(date, 3, 2));
- ar[8] := StrToInt('$' + copy(date, 5, 2));
- ar[9] := StrToInt('$' + copy(date, 7, 2));
- CRC_CPCC(ar, length(ar), CRC);
- nTmp := StrToInt(copy(date, 8, 1));
- nTmp := nTmp mod 2;
- for i := 1 to 4 do
- begin
- c[i] := StrToInt('$' + copy(CRC, i, 1));
- if c[i] > 9 then
- begin
- if nTmp = 0 then
- begin
- c[i] := c[i] - 6;
- end
- else
- begin
- c[i] := c[i] - 9;
- end;
- end;
- end;
- CRC := IntToStr(c[1])
- +IntToStr(c[2])
- +IntToStr(c[3])
- +IntToStr(c[4]);
- edit1.Text := CRC;
- end;
- procedure TFrmEnCode.BitBtn1Click(Sender: TObject);
- var
- buffer : array[1..100] of char;
- str : string;
- begin
- {
- fStream := TFILESTREAM.Create('code.dat',fmOpenReadWrite);
- fStream.Position := 0;
- fStream.Read(buffer,fStream.Size);
- if fStream.size = 0 then
- begin
- str := '';
- end
- else
- begin
- str := StrPas(@buffer);
- end;
- FreeAndNil(fStream);
- }
- userDB := TSQLiteDatabase.Create(AnsiToUTF8(_GetDBPath + 'code.db'));
- userTB := userDB.GetTable('select password from user where name = 1001 ');
- if userTB.RowCount = 0 then
- begin
- str := '';
- end
- else
- begin
- str := userTB.FieldByName['password'];
- end;
- if (edit1.Text <> str) or (str = '') then
- begin
- _MsgError('密码错误!');
- exit;
- end
- else
- begin
- if (edit2.Text <> '') and (edit2.Text = edit3.Text) then
- begin
- {
- fStream := TFILESTREAM.Create('code.dat',fmOpenReadWrite);
- fStream.Position := 0;
- str "= edit2.Text;
- strPCopy(@buffer,str);
- fStream.Write(buffer,length(str));
- }
- userDB.ExecSQL('update user set password = ''' + edit2.Text + ''' where name = 1001');
- _MsgError('密码修改成功');
- close;
- end
- else
- begin
- if edit2.Text = '' then
- begin
- _MsgError('新密码不能为空');
- end
- else
- begin
- _MsgError('新密码输入不一致');
- end;
- exit;
- end;
- end;
- end;
- procedure TFrmEnCode.BitBtn2Click(Sender: TObject);
- begin
- close;
- end;
- procedure TFrmEnCode.Edit1KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if (key = 4100) or (key = 4101) then
- BitBtn1.Click;
- if key = 4096 then
- BitBtn2.Click;
- end;
- procedure TFrmEnCode.Edit2KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if (key = 4100) or (key = 4101) then
- BitBtn1.Click;
- if key = 4096 then
- BitBtn2.Click;
- end;
- procedure TFrmEnCode.Edit3KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if (key = 4100) or (key = 4101) then
- BitBtn1.Click;
- if key = 4096 then
- BitBtn2.Click;
- end;
- end.
- .
|