📄 unit1.pas
字号:
$4ba99586, $ef5562e9, $c72fefd3, $f752f7da, $3f046f69, $77fa0a59,
$80e4a915, $87b08601, $9b09e6ad, $3b3ee593, $e990fd5a, $9e34d797,
$2cf0b7d9, $022b8b51, $96d5ac3a, $017da67d, $d1cf3ed6, $7c7d2d28,
$1f9f25cf, $adf2b89b, $5ad6b472, $5a88f54c, $e029ac71, $e019a5e6,
$47b0acfd, $ed93fa9b, $e8d3c48d, $283b57cc, $f8d56629, $79132e28,
$785f0191, $ed756055, $f7960e44, $e3d35e8c, $15056dd4, $88f46dba,
$03a16125, $0564f0bd, $c3eb9e15, $3c9057a2, $97271aec, $a93a072a,
$1b3f6d9b, $1e6321f5, $f59c66fb, $26dcf319, $7533d928, $b155fdf5,
$03563482, $8aba3cbb, $28517711, $c20ad9f8, $abcc5167, $ccad925f,
$4de81751, $3830dc8e, $379d5862, $9320f991, $ea7a90c2, $fb3e7bce,
$5121ce64, $774fbe32, $a8b6e37e, $c3293d46, $48de5369, $6413e680,
$a2ae0810, $dd6db224, $69852dfd, $09072166, $b39a460a, $6445c0dd,
$586cdecf, $1c20c8ae, $5bbef7dd, $1b588d40, $ccd2017f, $6bb4e3bb,
$dda26a7e, $3a59ff45, $3e350a44, $bcb4cdd5, $72eacea8, $fa6484bb,
$8d6612ae, $bf3c6f47, $d29be463, $542f5d9e, $aec2771b, $f64e6370,
$740e0d8d, $e75b1357, $f8721671, $af537d5d, $4040cb08, $4eb4e2cc,
$34d2466a, $0115af84, $e1b00428, $95983a1d, $06b89fb4, $ce6ea048,
$6f3f3b82, $3520ab82, $011a1d4b, $277227f8, $611560b1, $e7933fdc,
$bb3a792b, $344525bd, $a08839e1, $51ce794b, $2f32c9b7, $a01fbac9,
$e01cc87e, $bcc7d1f6, $cf0111c3, $a1e8aac7, $1a908749, $d44fbd9a,
$d0dadecb, $d50ada38, $0339c32a, $c6913667, $8df9317c, $e0b12b4f,
$f79e59b7, $43f5bb3a, $f2d519ff, $27d9459c, $bf97222c, $15e6fc2a,
$0f91fc71, $9b941525, $fae59361, $ceb69ceb, $c2a86459, $12baa8d1,
$b6c1075e, $e3056a0c, $10d25065, $cb03a442, $e0ec6e0e, $1698db3b,
$4c98a0be, $3278e964, $9f1f9532, $e0d392df, $d3a0342b, $8971f21e,
$1b0a7441, $4ba3348c, $c5be7120, $c37632d8, $df359f8d, $9b992f2e,
$e60b6f47, $0fe3f11d, $e54cda54, $1edad891, $ce6279cf, $cd3e7e6f,
$1618b166, $fd2c1d05, $848fd2c5, $f6fb2299, $f523f357, $a6327623,
$93a83531, $56cccd02, $acf08162, $5a75ebb5, $6e163697, $88d273cc,
$de966292, $81b949d0, $4c50901b, $71c65614, $e6c6c7bd, $327a140a,
$45e1d006, $c3f27b9a, $c9aa53fd, $62a80f00, $bb25bfe2, $35bdd2f6,
$71126905, $b2040222, $b6cbcf7c, $cd769c2b, $53113ec0, $1640e3d3,
$38abbd60, $2547adf0, $ba38209c, $f746ce76, $77afa1c5, $20756060,
$85cbfe4e, $8ae88dd8, $7aaaf9b0, $4cf9aa7e, $1948c25c, $02fb8a8c,
$01c36ae4, $d6ebe1f9, $90d4f869, $a65cdea0, $3f09252d, $c208e69f,
$b74e6132, $ce77e25b, $578fdfe3, $3ac372e6));
var
Form1: TForm1;
//实际加密使用的子密钥
Key_Boxes: array[1..1042] of LongWord;
implementation
{$R *.dfm}
//BlowFish解密函数,入口、出口都是64位
function BlowFish_DN(PT: int64): int64;
var
i: byte;
xL, xR, tmp: LongWord;
r: int64;
begin
xL := PT shr $20;
xR := PT mod $100000000;
xR := xR xor Key_Boxes[17];
xL := xL xor Key_Boxes[18];
for i:=16 downto 1 do
begin
if i<16 then
begin
tmp := xR; xR := xL; xL := tmp;
end;
xR := BlowFish_Func(xL) xor xR;
xL := xL xor Key_Boxes[i];
end;
r := xL;
r := (r shl $20) or xR;
Result := r;
end;
//BlowFish加密函数,参数同上
function BlowFish_EN(PT: int64): int64;
var
i: byte;
xL, xR, tmp: LongWord;
r: int64;
begin
xL := PT shr $20;
xR := PT mod $100000000;
for i:=1 to 16 do
begin
xL := xL xor Key_Boxes[i];
xR := BlowFish_Func(xL) xor xR;
if i<16 then
begin
tmp := xR; xR := xL; xL := tmp;
end;
end;
xR := xR xor Key_Boxes[17];
xL := xL xor Key_Boxes[18];
r := xL;
r := (r shl $20) or xR;
Result := r;
end;
//BlowFish中间的运算函数,入口、出口参数都是32位
function BlowFish_Func(PT: LongWord): LongWord;
var
a, b, c, d: byte;
begin
a := (PT and $FF000000) shr $18;
b := (PT and $00FF0000) shr $10;
c := (PT and $0000FF00) shr $8;
d := (PT and $000000FF);
Result := (((Key_Boxes[a+19] + Key_Boxes[b+19+256]) mod 4294967296) xor Key_Boxes[c+19+512] + Key_Boxes[d+19+768]) mod 4294967296;
end;
//BlowFish的初始化,得到子密钥,放在Key_Boxes中
procedure BlowFish_Init(Key: string);
var
i, j, k: integer;
tmp: LongWord;
PT: int64;
begin
FillChar(Key_Boxes, SizeOf(Key_Boxes), 0);
//变换填充P盒
j := 1;
for i:=1 to 18 do
begin
tmp := 0;
for k:=0 to 3 do
begin
tmp := (tmp shl 8) or Ord(Key[j]);
inc(j);
if j>Length(Key) then
j := 1;
end;
Key_Boxes[i] := pBox[i] xor tmp;
end;
//填充S盒
for i:=0 to 3 do
for j:=0 to 255 do
Key_Boxes[i*256+j+19] := sBox[i+1, j+1];
//开始连续填充
PT := 0;
for i:=1 to 521 do
begin
PT := BlowFish_EN(PT);
Key_Boxes[i*2-1] := PT shr $20;
Key_Boxes[i*2] := PT mod $100000000;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
b:Int64;
S:String;
Str:String;
begin
b:=0;
S:=Edit1.Text;
for i:=1 to Length(Edit1.Text) do
b:=b+ord(S[i])*10;
BlowFish_Init('ksaiy');
BlowFish_EN(B);
if Edit2.Text =IntToHex(BlowFish_EN(b),0) then
ShowMessage('注册成功!')
else
ShowMessage('注册失败!');
///////////////////////////////////////////////////////////////////////////////
//Des DEMO V1.0//
//作者:ksaiy//
//欢迎使用由ksaiy制作的DES加密算法演示程序,此算法为标准的DES算法,你可以根据的
//的自己需要进行变形。具体怎么操作可以登录我们的网站查询详细的资料。我们专门为软
//件开发者提供软件加密安全测试服务和软件加密解决方案,具体的可以参看我们的网站上
//的资料。我们的网站:http://www.ksaiy.com http://www.magicoa.com
//技术支持:ksaiy@sina.com 在线QQ:40188696 UC:934155
//End //
//注意:转载请保留以上信息。//
///////////////////////////////////////////////////////////////////////////////
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -