了解 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]

对于十六进制字符串。