Delphi6-xe5 中的MD5实现方法


本文整理自网络,侵删。

 在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。
在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。

示例代码

procedure TForm1.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;

 

说明:
  MyMD5.HashValue 函数中可以是一个字符串或是一个流对象,它返回的结果类型为 T4x4LongWordRecord 的MD5签名后结果

  MyMD5.AsHex  函数是将T4x4LongWordRecord的Md5签名转换成为十六进制的MD5签名字符串。

在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。 在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。 示例代码 procedure TForm1.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; 说明: MyMD5.HashValue 函数中可以是一个字符串或是一个流对象,它返回的结果类型为 T4x4LongWordRecord 的MD5签名后结果 MyMD5.AsHex 函数是将T4x4LongWordRecord的Md5签名转换成为十六进制的MD5签名字符串。-----------------------------------------以上的方法适合Indy9---------------------------------------------以下为Indy10的用法用delphi2009或delphi2010时以上就会报错了.type TMD5 = class(TIdHashMessageDigest5);function StrToMD5(S: String): String; overload;function StrToMD5(S: String; L: integer): String; overload;implementation function StrToMD5(S: String): String;var Md5Encode: TMD5;begin Md5Encode:= TMD5.Create;try     //Result := Md5Encode.AsHex(Md5Encode.HashValue(S)); // Indy9的写法    Result := Md5Encode.HashStringAsHex(S);    // Indy10中可以直接HashStringAsHexfinally     Md5Encode.Free;end;end;function StrToMD5(S: String; L: integer): String;begin Result := Copy(StrToMD5(S), 5, L);end;

相关阅读 >>

Delphi 去掉文件只读属性

Delphi spcomm串口控件的例程

Delphi 杨辉三角

Delphi实现进制转化(2进制,8进制,10进制,16进制)

Delphi idhttp读取网页重定向

Delphi与汇编

Delphi的idhttp的基本用法

Delphi中exit,abort,break,continue,halt,runerro 的区别

Delphi中模拟鼠标点击事件

Delphi安卓创建pdf文件并打开

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...