私の頭の後ろの何かが私にここで何かが分からないと言っています。MessageDigest MD5私が期待しているものを返さないアルゴリズム
私は、既存のJavaプロジェクトを、認証にapiキーのmd5ハッシュを使用するサードパーティのapiと統合しています。それは私のために働いていない、そしてデバッグ中に、私が生成しているハッシュが彼らが提供した例と一致しないことに気づいた。私はいくつかのウェブサイトで文字列からMD5ハッシュを作成してその例を確認していますが、私が間違っていると判断し、正しいと感じることができます。
たとえば、this websiteによれば、文字列 "hello"は "5d41402abc4b2a76b9719d911017c592"というハッシュを生成します。 (FWIWは、私が持っている例を正しくハッシュしているようだが、このウェブサイトについては何も知らない)。私は私のコードを介して実行すると、私は得る:
XUFAKrxLKna5cZ2REBfFkgの==
は、ここで私は非常に使用し、私はmd5ハッシュ値/文字列を生成するために使用しています簡単な方法:
private String md5(String md5Me) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(md5Me.getBytes("UTF-8"));
return Base64.encodeBase64String(md.digest());
}
です先週SHA1アルゴリズムを使用して異なるAPIを正常に認証するための同様のメソッドです。私は問題がorg.apache.commons.net.util.Base64.encodeBase64Stringに関連しているのだろうかと疑問に思っています... byteArrayが正しいが変換された文字列が間違っているかどうかを調べるテストがあれば、 。
md.digest()には、探しているバイトが含まれている必要があります。さらにBase64アルゴリズムを使ってそれらをエンコードし、別の結果を得ます。 – hoaz
httpリクエストのためにこれらのバイトをStringに変換する必要があります。 ? – eric
新しい文字列(バイト[]バイト) – Andy