在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。
在Uses单元中引用IdHashMessageDigest单元,再写如下代码即可以达到MD5的实现。
示例代码
在Uses单元中引用IdHashMessageDigest单元,再写如下代码即可以达到MD5的实现。
示例代码
procedureTForm1.Button1Click(Sender:TObject);
var
MyMD5:TIdHashMessageDigest5;
Digest:T4x4LongWordRecord;
begin
MyMD5:=TIdHashMessageDigest5.Create;
Digest:=MyMD5.HashValue('');
ShowMessage('32:'+MyMD5.AsHex(Digest));//显示32个字符长度的MD5签名结果
ShowMessage('16:'+Copy(MyMD5.AsHex(Digest),9,16));//显示16个字符长度的MD5签名结果
end;
var
MyMD5:TIdHashMessageDigest5;
Digest:T4x4LongWordRecord;
begin
MyMD5:=TIdHashMessageDigest5.Create;
Digest:=MyMD5.HashValue('');
ShowMessage('32:'+MyMD5.AsHex(Digest));//显示32个字符长度的MD5签名结果
ShowMessage('16:'+Copy(MyMD5.AsHex(Digest),9,16));//显示16个字符长度的MD5签名结果
end;
说明:
MyMD5.HashValue函数中可以是一个字符串或是一个流对象,它返回的结果类型为T4x4LongWordRecord的MD5签名后结果
MyMD5.AsHex函数是将T4x4LongWordRecord的Md5签名转换成为十六进制的MD5签名字符串。
MyMD5.HashValue函数中可以是一个字符串或是一个流对象,它返回的结果类型为T4x4LongWordRecord的MD5签名后结果
MyMD5.AsHex函数是将T4x4LongWordRecord的Md5签名转换成为十六进制的MD5签名字符串。