首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SHA512以"1“开头?

为什么SHA512以"1“开头?
EN

Cryptography用户
提问于 2017-01-27 21:28:13
回答 1查看 848关注 0票数 -4

我只是用了这个

代码语言:javascript
复制
hashed = str(bin(int(hashlib.sha512(input1).hexdigest(), 16))[2:])

然后看到第一个位总是1

我注意到了一个非常奇怪的模式,所有SHA512输出的第一个位总是1,而其他的是随机的。为什么会这样呢?

这是否意味着SHA512只提供511位安全?

这能证明SHA512不是一个随机的先知吗?

EN

回答 1

Cryptography用户

发布于 2017-01-28 10:09:12

我注意到了一个非常奇怪的模式,所有SHA512输出的第一位总是1,而其他的则是随机的。为什么会这样呢?

你做错了(读:编码),这让你误解了事情。请看,所有使用07启动(十六进制)的SHA-512都将以零作为第一位,其他所有以8F开头的都将以1开头作为第一位。

最简单的例子:以字母a的SHA-512为例,您将得到一个以零位开始的散列。

代码语言:javascript
复制
SHA512("a") = 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75

在二进制文件中变成…

代码语言:javascript
复制
HEX:    1    f |    4    0 |    f    c | …
BIN: 0001 1111 | 0100 0000 | 1111 1100 | …
     ^ ZERO!!!

因此,正如您所看到的,您只是没有正确地测试事物。◼

这是否意味着SHA512只提供511位安全?

不,如上文所示/证明。

这能证明SHA512不是一个随机的先知吗?

不,如上文所示/证明。

票数 4
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/43366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档