或者,一般来说,不是8的倍数的任何任意数或位。
根据hashlib.py,有一个名为SHA 256的构造器方法。然后使用sha 256()创建一个SHA 256哈希对象。我现在可以使用update()方法向这个对象提供任意字符串,并且在任何时候我都可以使用digest()或hexdigest()方法向它请求到目前为止提供的字符串串联的摘要。
好吧。我想饲料1位SHA 256与此链接"What is the SHA-256 hash of a single '1' bit?"线
当然是在Python 2.7中。
那么,对由位“1”组成的1位长的输入进行散列的过程是什么?(不是8位长字节[] { 1 }输入)?
2条答案
按热度按时间zi8p0yeb1#
hashlib
API和底层C模块都不支持“字节缓冲区”以外的任何东西。由于SHA标准规定向 any 消息添加一些东西,无论长度如何,您甚至不能在python中“预填充”您的输入以绕过该限制。
演示(摘自https://www.rfc-editor.org/rfc/rfc4634#section-4.1):
虽然计算长度不是8的倍数的消息的哈希在技术上是允许的,但我非常怀疑是否有真实的的用例(只需要使用Python标准库)。
8xiog9wr2#
可以使用https://pypi.org/project/sha256bit/
与hashlib相同的接口,除了
update
函数有一个可选参数bitlen
来支持位粒度。