我将 Delphi XE2与 FireMonkey 一起使用。
我已经阅读了许多有关 MD5 的其他问题,但没有找到我遇到的问题的答案......我还测试了不同的脚本以从 Delphi 生成 MD5:
function MD5(const text: string) : string;
var
md5 : TIdHashMessageDigest5;
begin
md5 := TIdHashMessageDigest5.Create;
Result := LowerCase(md5.HashStringAsHex(text, TEncoding.ANSI));
md5.Free;
end;
或者
function MD5(const text: String) : string;
var
md5: IMD5;
begin
md5:= GetMD5;
md5.Init;
md5.Update(TByteDynArray(RawByteString(AnsiString(text))), Length(AnsiString(text)));
Result := LowerCase(md5.AsString);
end;
两者都给了我相同的结果......这通常与我在 PHP 中的结果相同:
$md5 = md5($toencode);
$md5 = hash("md5", $toencode);
"
但是,如果我使用 Delphi或PHP,当我请求这些字符之一的 MD5 时,结果会有所不同'
:
我已经测试了许多扩展的 ASCII 字符并具有相同的 MD5 ...
所以,我不明白为什么我与它们中的少数("
或'
)存在差异,并且我想知道是否有一种方法可以始终从 Delphi 生成 PHP MD5 结果,无论字符是什么。
任何的想法?
例如:
与德尔福:
": b15835f133ff2e27c7cb28117bfae8f4
': 3590cb8af0bbb9e78c343b52b93773c9
使用PHP:
": 3bd864034f446da13581129bb17f9191
': 024c94d6e03b6f67a86b952b914816c7
正式化这个问题..我找到了答案......顺便说一句,我发布它,因为其他人可能有同样的问题......
"
并且'
在 PHP 中被转义......所以,在 Delphi 中,我必须编码\"
和\'
......如果你认为我忘记了字符或者如果你想添加一些细节,请不要犹豫......