11

私が構築している API で HMACSHA256 要求署名を実装しようとしています。https://www.rfc-editor.org/rfc/rfc4868から私が理解したことから、秘密鍵はハッシュアルゴリズムと同じビット数であることが最善です (つまり、SHA256 秘密鍵は 256 ビット/32 バイトである必要があります)。 .

C# 用のさまざまな乱数ジェネレーターの 1 つを使用できますか、またはこれらのキーを生成する必要がある特定の方法がありますか。

最後に、Amazon Web Services は HMACSHA256 を使用しますが、(少なくとも私には) 彼らが提供する秘密鍵は 320 ビット/40 バイトです (キーが UTF-8 を使用してバイトに変換される場合、https://github.com/aws/を参照してください)。 aws-sdk-net/blob/master/AWSSDK/Amazon.Runtime/Internal/Auth/AWS4Signer.cs#L205-L232 )。切り捨てられているため、ハッシュアルゴリズムで必要以上に使用する理由はありますか?

4

2 に答える 2

9

キーが HMAC がサポートするよりも長い場合、通常は適切なサイズにハッシュされます。これは主に、任意の長さの人間が読めるキーをサポートするためのものです。プログラムでキーを生成していて、人間が判読できるようにする必要がない場合は、RandomNumberGenerator. これは基本的にそれが作成されたものです。

using System.Security.Cryptography;

using RandomNumberGenerator rng = RandomNumberGenerator.Create();

byte[] data = new byte[32];
rng.GetBytes(data);
于 2013-07-10T16:37:10.747 に答える