Sha256 输出长度对我来说毫无意义

Posted

技术标签:

【中文标题】Sha256 输出长度对我来说毫无意义【英文标题】:Sha256 output length makes no sense to me 【发布时间】:2022-01-10 03:51:44 【问题描述】:

我刚刚玩过 SHA256,我注意到一些奇怪的事情:十六进制摘要的长度是 32 个字符,每个字符可以是 16 个不同字符之一(0-9,a-f)。如果我错了,现在纠正我,但这不是 256。16*32 是 512。 那么......我在这里错过了什么?为什么要多出 16 个字母? 提前感谢您的帮助。

【问题讨论】:

你错误地乘以 32*16,你应该乘以 32*4=128,因为十六进制是 4 位的。您在哪里看到 SHA-256 哈希 32 十六进制输出? 是的,输出是 256 位 / 32 字节,所以十六进制摘要不会太长,短 32 个字符(每个字节 2 个十六进制字符)。 @kelalaka 首先,你当然是对的。它只会让问题变得更大。它的问题,我不确定它不会让洞变得更大:64*16 是 1024。如果我想解决 2^256 的问题,我只需要 16 个字符。问题是我又有点困惑了,因为我知道 1 hex char 是 4 位。你是对的,4 * 64 是 256。那么......如果不是 2^256,为什么可能的结果数量?我不确定这是问这个问题的地方,但我会试着弄清楚。 【参考方案1】:

首先,这并不是我真正的答案,是@kelaka 让我在评论中找到了答案——所以我不会对自己感到兴奋。

我试图计算错误的选项数量,但将 16 和 64(哈希的实际长度)相乘。如果我按照它应该的方式计算它 - 16 ^ 64,我会得到一个等于 2 ^ 256 的大数,如这里的代码所示:

>>> 16**64 == 2**256
True

很抱歉浪费大家的时间在我的愚蠢上。

【讨论】:

以上是关于Sha256 输出长度对我来说毫无意义的主要内容,如果未能解决你的问题,请参考以下文章

MD5、sha1、sha256分别输出多少位?

MD5,sha1,sha256分别输出多少位啊?

这些东西对我来说已经没有多大意义了,但对初学者来说,可能是宝藏

这些东西对我来说已经没有多大意义了,但对初学者来说,可能是宝藏

SHA1、SHA2安全hash算法

下载文件旁边附的MD5/SHA256等有什么用途?