渭南师范学院教务处:如何用Delphi实现MD5?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 17:19:01
希望把问题说详细点

http://bbs.cfan.com.cn/attachment.p...tid=13858&stc=1
压缩包中有整个项目的源代码,其中用以编码的类MD5在单元文件SF_MD5.PAS中,MD5类的bmsj方法用以写入字符串数据,MD5bm属性用以返回MD5编码,注意MD5bm返回后会清空缓冲数据。参考以下调用代码:

var
m : MD5;
s1,s2 : string;
begin
m:=MD5.Create;
m.bmsj('a');
s1:=m.MD5bm; //'a'返回0CC175B9C0F1B6A831C399E269772661
s2:=m.MD5bm; //空数据返回D41D8CD98F00B204E9800998ECF8427E
end;

使用bmsj时可以将数据分批写入。参考以下调用代码:

var
m : MD5;
s : string;
begin
m:=MD5.Create;
m.bmsj('a');
m.bmsj('b');
m.bmsj('c');
s:=m.MD5bm; //'abc'返回900150983CD24FB0D6963F7D28E17F72
end;
这次对MD5类的bmsj过程进行了重载如下:使得bmsj可以对Delphi中的任意数据进行编码。

procedure bmsj(p : Pointer; n : Cardinal); overload; //编码数据1
第一个参数是指向数据的指针,
第二个参数是数据的长度,以字节为单位。

单元文件SF_MD5.PAS中添加了WJMD5类,派生于线程TThread类,可以对文件进行编码,由于是线程所以在编码过程中可以暂停,中止编码。程序的外观进行了如下修改:以适用于文件编码。