了解 hexdigest 的作用吗?
Understand what hexdigest do?
a = hashlib.sha512("data").hexdigest()[:32]
这里使用 hexdigest 有什么意义?
Hash halving (SHA256-half, SHA512-half...) 生成哈希并将其截断为一半大小,因此 SHA512-half 等同于 SHA256。虽然较大的散列函数接受较大的输入,但一旦被截断,它与上述大小的 non-truncated 散列具有相同的冲突率,并且如果我们谈论的散列是可靠的和经过审查的(如 SHA256 和 SHA512) ,将较大的哈希值减半以适应较小的哈希值只能增加感知的安全性,但在技术上与仅生成较小的哈希值没有什么不同。
无论如何,如果您真的不想只生成 SHA256,您可以将 SHA512 哈希值减半:
halved_sha512 = hashlib.sha512(b"input").digest()[:32]
对于bytes
,或者:
halved_sha512 = hashlib.sha512(b"input").hexdigest()[:64]
对于十六进制字符串。
a = hashlib.sha512("data").hexdigest()[:32]
这里使用 hexdigest 有什么意义?
Hash halving (SHA256-half, SHA512-half...) 生成哈希并将其截断为一半大小,因此 SHA512-half 等同于 SHA256。虽然较大的散列函数接受较大的输入,但一旦被截断,它与上述大小的 non-truncated 散列具有相同的冲突率,并且如果我们谈论的散列是可靠的和经过审查的(如 SHA256 和 SHA512) ,将较大的哈希值减半以适应较小的哈希值只能增加感知的安全性,但在技术上与仅生成较小的哈希值没有什么不同。
无论如何,如果您真的不想只生成 SHA256,您可以将 SHA512 哈希值减半:
halved_sha512 = hashlib.sha512(b"input").digest()[:32]
对于bytes
,或者:
halved_sha512 = hashlib.sha512(b"input").hexdigest()[:64]
对于十六进制字符串。