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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值