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);
しかし、これらの文字のいずれかの MD5 を要求すると、Delphi または PHP を使用すると結果が異なります。"
または、'
異なる結果を生成する他の文字が存在する可能性がありますが、テスト中にこれらの文字を見つけるだけです...
多くの拡張 ASCII 文字でテストしましたが、同じ MD5 を使用しています...
"
だから、私はそれらのいくつか(または)と違いがある理由を理解していません'
.文字が何であれ、DelphiからPHP MD5の結果を常に生成する方法があるかどうかを知りたい.
何か案が?
例えば:
デルファイで:
": b15835f133ff2e27c7cb28117bfae8f4
': 3590cb8af0bbb9e78c343b52b93773c9
PHPで:
": 3bd864034f446da13581129bb17f9191
': 024c94d6e03b6f67a86b952b914816c7
この質問を形式化する..答えを見つけました...ところで、他の人が同じ問題を抱えている可能性があるので投稿します...
"
PHP ではエスケープされ'
ます...そのため、Delphi 内でエンコードする必要が\"
あり\'
ます...文字を忘れたと思われる場合、または詳細を追加したい場合は、躊躇しないでください...