【问题标题】:Getting hex representation of sha256 hash using SJCL使用 SJCL 获取 sha256 哈希的十六进制表示
【发布时间】:2012-09-18 11:25:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript hex sjcl


    【解决方案1】:

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

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

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

    【讨论】:

    • @AndreyFedorov:我更喜欢你之前的评论。 :)
    • 哈!我有这样的想法,如果谷歌以某种方式将这个问题放在我的名字的结果页面上,那么没有人会再次雇用我作为程序员。作为记录,我最初的评论类似于“对。我混淆了'一个十六进制字符有 16 个可能的值'和'一个十六进制字符有 16 位信息'”。在我的辩护中,我前一天晚上没睡多少:)
    • 如何获取 sha512 哈希的十六进制表示??
    • @AminFarajzadeh:它只是两倍 - 所以,128 个十六进制数字。
    猜你喜欢
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2023-04-03
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 2020-01-22
    相关资源
    最近更新 更多