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

2016-08-22 10:23:25来源:http://jxyx521.blog.51cto.com/7643111/1303121作者:jyxy521人点击


在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。 在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。 示例代码 procedure TForm1.Button1Click(Sender: TObject); varMyMD5: TIdHashMessageDigest5; Digest: T4x4LongWordRecord; beginMyMD5 := 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时以上就会报错了.typeTMD5 = class(TIdHashMessageDigest5);function StrToMD5(S: String): String; overload;function StrToMD5(S: String; L: integer): String; overload;implementationfunction StrToMD5(S: String): String;varMd5Encode: TMD5;beginMd5Encode:= TMD5.Create;try//Result := Md5Encode.AsHex(Md5Encode.HashValue(S)); // Indy9的写法Result := Md5Encode.HashStringAsHex(S);// Indy10中可以直接HashStringAsHexfinallyMd5Encode.Free;end;end;function StrToMD5(S: String; L: integer): String;beginResult := Copy(StrToMD5(S), 5, L);

end;

copy函数:

举个例子:str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234。Copy有3个参数,第一个是你要处理的字符串,第二个是你要截取的开始位置,第3个是截取位数。当你的第3个参数大于字符长度,那么效果就是取 开始位置 后的所有字符。str1 := Copy(Str,2,10); 结果就是str1 等于 23456。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台