Indy自带TIdHashMessageDigest*类,可以方便的计算MD2、MD4和MD5

代码很简单,其中需要注意的是,Indy9中 Md5Encode.AsHex(Md5Encode.HashValue(S)) 这种写法在Indy10里已经不能用了,之前就是因为这个卡了好久。

unit uMD5;
 
 
 
interface
 
 
 
uses
 
  IdHashMessageDigest, IdHash, IdGlobal;
 
 
 
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;
 
 
 
end.

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐