9

SJCLドキュメントは、sha256の例として次のコードを提供します。

var bitArray = sjcl.hash.sha256.hash("message");  
var digest_sha256 = sjcl.codec.hex.fromBits(bitArray);  

その例のダイジェストは、16文字の16進文字列(256ビット= 16の16進文字)を期待していたときに、64文字の16進文字列に等しくなります。私は何が欠けていますか?ハッシュの16文字のダイジェストを取得するにはどうすればよいですか?

4

1 に答える 1

12

あなたは何かを誤解しています。256ビットは16桁の16進数と等しくありません。

このように考えてください。256ビットは32バイト(1バイトあたり8ビット)に相当します。1バイト(8ビット)は256(2 ^ 8)個の異なる値をエンコードできます。1つの16進数(基数16)は、16の異なる値をエンコードできます。1バイトと同じ数の値をエンコードする場合、16進数はいくつ必要ですか?2 ; 2つの16進数は、256の異なる値(16 ^ 2)をエンコードできます。したがって、1バイトあたり2桁の16進数が必要で、256ビットが32バイトに等しい場合、256ビットに格納できる情報を表すには64桁の16進数が必要であることを意味します。

16進ダイジェストは問題ありません。64文字のはずです。

于 2012-09-26T19:35:50.113 に答える