Delphi 中的MD5实现方法及delphi2009和delphi2010中用法


本文整理自网络,侵删。

  
在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中可以直接HashStringAsHex
finally
Md5Encode.Free;
end;
end;

function StrToMD5(S: String; L: integer): String;
begin
Result := Copy(StrToMD5(S), 5, L);
end;

相关阅读 >>

Delphi 之 对话框组件

Delphi 获取listbox1多选的值

Delphi jpeg压缩的两种方法

Delphi windows 编程[3] - 学习窗体生成的过程三

Delphi strtoint 将“字符型”转换成“整数型”

Delphi 以二进制方式读取图片保存到string

Delphi 删除或清空一个目录(包含多级)

Delphi stringgrid 实例3: 本例功能: 1、修改 tstringgrid的默认宽与高; 2、添加行; 3、确认当前单元并赋值.

dekphi qq自动发消息源码

Delphi idftp

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



打赏

取消

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

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

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

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

评论

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