关于 Delphi 7 中文MD5的问题
2021-03-10 16:35
标签:message 字符 cdc 包含 版本 md5 version value roc 使用Indy自带的md5算法,代码如下: 我们发现这个函数处理数字和英文是正确的,如果包含中文,则MD5值和其他语言对不上了,其实算法没问题,是编码的问题。一般MD5都是使用UTF8编码,使用的时候需要把字符串转换为UTF8编码: MD5值为:a7bac2239fcdcb3a067903d8077c4a07 如果Delphi XE8 以上版本的System.Hash.THashMD5,就不需要UTF8转换了,内部已经做了转换: 只要这样就可以了: 关于 Delphi 7 中文MD5的问题 标签:message 字符 cdc 包含 版本 md5 version value roc 原文地址:https://www.cnblogs.com/rtcmw/p/12678595.htmluses IdHash, IdHashMessageDigest;
function GetStringMD5(const AInPut: string): string;
var
MD5: TIdHashMessageDigest5;
{$IF CompilerVersion}
Digest: T4x4LongWordRecord;
{$IFEND}
begin
MD5 := TIdHashMessageDigest5.Create;
try
{$IF CompilerVersion>20.0} // Delphi 2009 +
Result := LowerCase(MD5.HashStringAsHex(AInPut));
{$ELSE}
Digest := MD5.HashValue(AInPut);
Result := LowerCase(MD5.AsHex(Digest));
{$IFEND}
finally
MD5.Free;
end;
end;
ShowMessage(GetStringMD5(UTF8Encode(‘中文‘)));
procedure THashMD5.Update(const Input: string);
begin
Update(TEncoding.UTF8.GetBytes(Input));
end;
ShowMessage(System.Hash.THashMD5.GetHashString(‘中文‘));
文章标题:关于 Delphi 7 中文MD5的问题
文章链接:http://soscw.com/index.php/essay/62848.html