| 查看: 509 | 回复: 0 | |||
[交流]
【转帖】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; |
» 猜你喜欢
真诚求助:手里的省社科项目结项要求主持人一篇中文核心,有什么渠道能发核心吗
已经有8人回复
寻求一种能扛住强氧化性腐蚀性的容器密封件
已经有5人回复
论文投稿,期刊推荐
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有4人回复
孩子确诊有中度注意力缺陷
已经有14人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复














回复此楼