web-dev-qa-db-ja.com

HMACで使用するキー

整合性を保証するために特定のメッセージでHMACを使用する必要がありますが、ハッシュアルゴリズムへの入力として与えられるキーの要件を理解できません。

特に、Javaでこれを行う必要があります。また、SHA256でHMACを使用したいので、HMAC RFCに従って、少なくとも32バイトのキーが必要です。当面は(テスト用)SecureRandom( "NativePRNG")、a Java暗号学的に強力な乱数ジェネレータの実装)でキーを生成しています。これでキーは十分ですか?

4
papafe

キーは、ハッシュ出力と同じサイズにする必要があります。あなたのケースではSHA-256を使用しているので、256ビットのキー(あなたが言及している32バイトに等しい)を使用するべきです。

HMACアルゴリズムは非常に柔軟なので、任意のサイズのキーを使用できます。ただし、128ビットのキーのみを使用する場合は、256ビットのハッシュを使用しても意味がありません。 MD5のような128ビットのハッシュを使用することもできます。

JavaのSecureRandomは、この目的でキーを生成するのに非常に適しています。

3
paj28