gpt4 book ai didi

php - 如何用 Delphi 和 PHP 获得相同的 MD5?

转载 作者:可可西里 更新时间:2023-11-01 12:33:44 26 4
gpt4 key购买 nike

我正在使用带有 FireMonkey 的 Delphi XE2

我已经阅读了许多关于 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 结果,无论字符是什么。

有什么想法吗?

For instance:

with Delphi:

": b15835f133ff2e27c7cb28117bfae8f4

': 3590cb8af0bbb9e78c343b52b93773c9

with PHP:

": 3bd864034f446da13581129bb17f9191

': 024c94d6e03b6f67a86b952b914816c7

形式化这个问题..我找到了答案...顺便说一句,我发布它是因为其他人可能有同样的问题...

"' 在 PHP 中进行了转义...因此,在 Delphi 中,我必须对 \"\'...如果您认为我忘记了字符或者如果您想添加一些细节,请不要犹豫...

最佳答案

Delphi 就在这里。

>>> hashlib.md5('"').hexdigest()
'b15835f133ff2e27c7cb28117bfae8f4'
>>> hashlib.md5("'").hexdigest()
'3590cb8af0bbb9e78c343b52b93773c9'

PHP 不需要默认转义这些字符;确保它被配置为不这样做。

关于php - 如何用 Delphi 和 PHP 获得相同的 MD5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com