2

Ruby と Java で HMAC について合意することができません。

ルビー:

hmac_key = "my hmac key" #this is THE REAL KEY
msg = "fCyVmpFAZxv9Utui2QWGUtoGJ//Zr5aH+1PV31ry/dwX3yVdeEMIMW/dfoA9\nihbnYrnoSnb2yyfOrBYoy0JlDvWz8GJ6dY643lDTj7xcw8Q="
hashb16  = OpenSSL::HMAC.hexdigest('sha256', hmac_key, msg)
puts hashb16

052310d1fc91df4e5bbb47194cc401feed51eca98668b501555c78774dad6bed

ジャワ:

String hmac_key = "my hmac key";
String encrypted_message_b64 = "fCyVmpFAZxv9Utui2QWGUtoGJ//Zr5aH+1PV31ry/dwX3yVdeEMIMW/dfoA9ihbnYrnoSnb2yyfO\nrBYoy0JlDvWz8GJ6dY643lDTj7xcw8Q=";
final Mac hmac = Mac.getInstance("HmacSHA256");
hmac.init(new SecretKeySpec(hmac_key.getBytes("UTF-8"), "HmacSHA256"));
byte[] signature = hmac.doFinal(encrypted_message_b64.getBytes("UTF-8"));
System.out.println(Hex.encodeHexString(signature));

d5bc0b58f43c6f6611f63822d22f99e18c51a33251a5a1c0c7712b4c7fb1ad24

何が悪いのか分かりますか?


編集:ひどくコピー/貼り付けされた文字列を修正しました。

Edit2:修正を元に戻し、ルビ文字列に適切なコンテンツを使用して、回答と受け入れられた回答が引き続き意味を持つようにしました。ぐちゃぐちゃでごめんなさい

4

2 に答える 2

5

メッセージは異なります - dfoA9\nRuby ブロックの を参照してください。

于 2012-10-15T12:37:15.303 に答える
2

コピー&ペーストで何を「修正」したかわかりません。2つのソース文字列はまだ異なり(\n場所が異なります)、投稿したハッシュは同じになります。私はあなたがそれらを等しくしていないと思います、さもなければあなたは質問を投稿しないでしょう。

しかし、私が見ているのは、あなたがb64_encodedRuby入力として使用しているということです。これは、msgあなたが私たちに示しているのではありません。内容が違う可能性はありますか?

于 2012-10-15T12:56:25.613 に答える