老文章档案 · 2003 年

MD5程序(Delphi)放送

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-06-22 · 作者:upfeed1 人气: · 出处:嬴政天下整理收藏)

/*** Source Code of MD5 ***/

/ written BY upfeed[FCG] /

/**************************/

下面的函数是计算核心,至于分组和填充部分就略去了。

====================================================

参数说明:

AA,BB,CC,DD是摘要信息,一般初始化为

AA := $67452301;

BB := $EFCDAB89;

CC := $98BADCFE;

DD := $10325476;

MSGs是一个长64的LongWord数组,保存的就是要摘要的信息

====================================================

procedure TMainForm.MD5(var AA, BB, CC, DD: LongWord; MSGs: array of LongWord);

var

A, B, C, D: LongWord;

T: array[1..64] of LongWord;

i: integer;

//没有循环左移的位运算,自己写一个

function ROL(r: LongWord; bit: byte): LongWord;

var

ii: byte;

begin

for ii:=1 to bit do

if r and $80000000 = $80000000 then

r := (r shl 1) or $01

else

r := (r shl 1);

Result := r;

end;

//四轮运算中的函数定义,也可以自行定义的

procedure FF(var a: LongWord; b, c, d: LongWord; k, s, i: byte);

begin

a := b + ROL((a + ((b and c) or (not b and d)) + MSGs[k] + T[i]), s);

end;

procedure GG(var a: LongWord; b, c, d: LongWord; k, s, i: byte);

begin

a := b + ROL((a + ((b and d) or (c and not d)) + MSGs[k] + T[i]), s);

end;

procedure HH(var a: LongWord; b, c, d: LongWord; k, s, i: byte);

begin

a := b + ROL((a + (b xor c xor d) + MSGs[k] + T[i]), s);

end;

procedure II(var a: LongWord; b, c, d: LongWord; k, s, i: byte);

begin

a := b + ROL((a + (c xor (b or not d)) + MSGs[k] + T[i]), s);

end;

begin

fillchar(T, sizeof(T), 0);

//常数数组的初始化,通常是这种形式,当然可以自己做手脚的

for i:=1 to 64 do

T[i] := Trunc(4294967296*abs(sin(i)));

A := AA; B := BB; C := CC; D := DD;

//第一轮

FF(A, B, C, D, 0, 7, 1); FF(D, A, B, C, 1, 12, 2); FF(C, D, A, B, 2, 17, 3); FF(B, C, D, A, 3, 22, 4);

FF(A, B, C, D, 4, 7, 5); FF(D, A, B, C, 5, 12, 6); FF(C, D, A, B, 6, 17, 7); FF(B, C, D, A, 7, 22, 8);

FF(A, B, C, D, 8, 7, 9); FF(D, A, B, C, 9, 12,10); FF(C, D, A, B, 10,17,11); FF(B, C, D, A, 11,22,12);

FF(A, B, C, D, 12,7,13); FF(D, A, B, C, 13,12,14); FF(C, D, A, B, 14,17,15); FF(B, C, D, A, 15,22,16);

//第二轮

GG(A, B, C, D, 1, 5,17); GG(D, A, B, C, 6, 9,18); GG(C, D, A, B, 11,14,19); GG(B, C, D, A, 0, 20,20);

GG(A, B, C, D, 5, 5,21); GG(D, A, B, C, 10, 9,22); GG(C, D, A, B, 15,14,23); GG(B, C, D, A, 4, 20,24);

GG(A, B, C, D, 9, 5,25); GG(D, A, B, C, 14, 9,26); GG(C, D, A, B, 3, 14,27); GG(B, C, D, A, 8, 20,28);

GG(A, B, C, D, 13,5,29); GG(D, A, B, C, 2, 9,30); GG(C, D, A, B, 7, 14,31); GG(B, C, D, A, 12,20,32);

//第三轮

HH(A, B, C, D, 5, 4,33); HH(D, A, B, C, 8, 11,34); HH(C, D, A, B, 11,16,35); HH(B, C, D, A, 14,23,36);

HH(A, B, C, D, 1, 4,37); HH(D, A, B, C, 4, 11,38); HH(C, D, A, B, 7, 16,39); HH(B, C, D, A, 10,23,40);

HH(A, B, C, D, 13,4,41); HH(D, A, B, C, 0, 11,42); HH(C, D, A, B, 3, 16,43); HH(B, C, D, A, 6, 23,44);

HH(A, B, C, D, 9, 4,45); HH(D, A, B, C, 12,11,46); HH(C, D, A, B, 15,16,47); HH(B, C, D, A, 2, 23,48);

//第四轮

II(A, B, C, D, 0, 6,49); II(D, A, B, C, 7, 10,50); II(C, D, A, B, 14,15,51); II(B, C, D, A, 5, 21,52);

II(A, B, C, D, 12,6,53); II(D, A, B, C, 3, 10,54); II(C, D, A, B, 10,15,55); II(B, C, D, A, 1, 21,56);

II(A, B, C, D, 8, 6,57); II(D, A, B, C, 15,10,58); II(C, D, A, B, 6, 15,59); II(B, C, D, A, 13,21,60);

II(A, B, C, D, 4, 6,61); II(D, A, B, C, 11,10,62); II(C, D, A, B, 2, 15,63); II(B, C, D, A, 9, 21,64);

AA := A + AA;

BB := B + BB;

CC := C + CC;

DD := D + DD;

end; (出处:嬴政天下整理收藏)

相关文章:

·ASProtect的加密算法初步分析

·我的PE程序加密核心代码(MASM 6.0)

·软磁盘反拷贝加密技术

·加密算法之RSA算法

·加密算法之DES算法

·加密算法之ElGamal算法

·加密算法之DSA算法

·加密算法之MD5算法

·加密算法之BLOWFISH算法

·软磁盘反拷贝加密技术

相关软件:

·加密终结者 v1.0破解版

·加密大师v1.0专业版注册码文件

·网页加密器(HTMLEncryptor)v1.21

·文件加密工具fedt for windows v1.5

·加密大师v3.0

·超级加密光盘破解器(hcssee)

·MD5加密计算工具

·顶天加密宝v1.01

·小小加密锁 v1.10

·加密精灵(EncryptGenie) v2.64

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。

档案馆里的相关老软件

🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史