• 締切済み

MD5ハッシュの方法

phpのmd5(文字列)で出力した値と同じ値をJavaのMessageDigest.getInstance("MD5")を使用して 出力したいのですが、うまくいきません。 どうすれば同じ値が出力できるようになるのでしょうか?

みんなの回答

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

PHPを使ったことがないので確認はしていません。 PHPのmd5は文字列からMD5を計算してMD5値の32文字16進数表示文字列を返すようです。 JavaのMessageDigestはバイト列からMD5を計算してMD5を16バイトのバイナリデータとして返すと思います。 PHPのmd5相当の機能をJavaのMessageDigestで実現するには次の手順が必要です。 1. PHPがmd5で使う文字列エンコーディングに合わせて文字列をバイト列に変換する。 2. MessageDigestのdigestを使ってMD5値をバイナリで得る。 3. 結果を16進文字列に変換する。 2,3は難しくありませんが、1は難題です。 Javaで適当な文字列エンコーディングでバイト列を作ってPHPの結果と一致すればそれで合っていると思いますけど。

関連するQ&A

専門家に質問してみよう