【发布时间】:2017-09-16 02:29:20
【问题描述】:
或者,一般来说,任何不是 8 的倍数的任意数或位。
根据hashlib.py,有一种以 SHA256 命名的构造方法。然后我使用 sha256() 创建一个 SHA256 哈希对象。我现在可以使用 update() 方法为这个对象提供任意字符串,并且在任何时候我都可以使用 digest() 或 hexdigest() 方法向它询问迄今为止提供给它的字符串的串联摘要。
嗯。我想根据此链接"What is the SHA-256 hash of a single '1' bit?" 向 SHA256 提供 1 位
当然是在 Python 2.7 中。
那么,散列由位“1”组成的 1 位长输入的过程是什么? (不是 8 位长字节 [] { 1 } 输入)?
【问题讨论】:
-
是的,但是填充是根据输入的比特长度完成的。还有其他语言的示例,[RFC 4634][2] 的 [第 8 节][1] 中有可用的 C 代码来计算不一定是 8 位的倍数的数据的哈希值。查看名称为
SHA*FinalBits(...)的方法。 [1]:tools.ietf.org/html/rfc4634#section-8 [2]:tools.ietf.org/html/rfc4634 -
是的,但是 Python 中没有 1 位类型
-
当然有,叫做布尔值。
-
@allo:想演示一下吗?
-
@DIUUSIULIUS 这听起来像是XY problem 的开始。您是想实现一些特定的目标,还是只是出于好奇?大多数现实世界的协议要么填充数字,要么对任意长度的整数使用特定的编码并对其进行哈希处理(如 BER)。