使用SJCL获取sha256哈希的十六进制表示

时间:2012-09-26 18:51:16

标签: javascript hex sjcl

SJCL docs提供以下代码作为sha256的示例:

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

当我期待一个16个字符的十六进制字符串(256位= 16个十六进制字符)时,该示例中的摘要等于64个字符的十六进制字符串。我错过了什么?如何获得16个字符的哈希摘要?

1 个答案:

答案 0 :(得分:9)

你误会了什么。 256位等于16个十六进制数字。

这样想:256位等于32字节(一个字节为8位)。一个字节(8位)可以编码256(2 ^ 8)个不同的值。单个十六进制数字(base-16)可以编码16个不同的值。如果要将相同数量的值编码为一个字节,您需要多少个十六进制数字?的两个;两个十六进制数字可以编码256个不同的值(16 ^ 2)。因此,如果我们每个字节需要两个十六进制数字,并且256位等于32字节,那么这意味着我们需要 64 十六进制数字来表示可以以256位存储的信息。

十六进制摘要很好。它应该是64个字符。