我只是用了这个
hashed = str(bin(int(hashlib.sha512(input1).hexdigest(), 16))[2:])然后看到第一个位总是1
我注意到了一个非常奇怪的模式,所有SHA512输出的第一个位总是1,而其他的是随机的。为什么会这样呢?
这是否意味着SHA512只提供511位安全?
这能证明SHA512不是一个随机的先知吗?
发布于 2017-01-28 10:09:12
我注意到了一个非常奇怪的模式,所有SHA512输出的第一位总是1,而其他的则是随机的。为什么会这样呢?
你做错了(读:编码),这让你误解了事情。请看,所有使用0到7启动(十六进制)的SHA-512都将以零作为第一位,其他所有以8到F开头的都将以1开头作为第一位。
最简单的例子:以字母a的SHA-512为例,您将得到一个以零位开始的散列。
SHA512("a") = 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75在二进制文件中变成…
HEX: 1 f | 4 0 | f c | …
BIN: 0001 1111 | 0100 0000 | 1111 1100 | …
^ ZERO!!!因此,正如您所看到的,您只是没有正确地测试事物。◼
这是否意味着SHA512只提供511位安全?
不,如上文所示/证明。
这能证明SHA512不是一个随机的先知吗?
不,如上文所示/证明。
https://crypto.stackexchange.com/questions/43366
复制相似问题