或者,通常,任何不是8的倍数的任意数字或位。
根据hashlib.py,有一个以SHA256命名的构造函数方法。然后我使用sha256()创建一个SHA256哈希对象。我现在可以使用update()方法使用任意字符串提供此对象,并且在任何时候我都可以使用digest()或hexdigest()方法向它请求提供给它的字符串串联的摘要。 / p>
好。我想根据此链接"What is the SHA-256 hash of a single '1' bit?"
将1位送到SHA256当然,在Python 2.7中。
那么,对由位“1”组成的1位长输入进行散列的过程是什么? (不是8位长字节[] {1}输入)?
答案 0 :(得分:3)
hashlib
API和底层C模块都不支持#34;字节的缓冲区"。
由于SHA标准规定向任何消息添加内容,无论长度如何,您甚至不能预先填充"预先填充"你在python中的输入来解决这个限制。
演示(取自https://tools.ietf.org/html/rfc4634#section-4.1):
>>> sha256('abcde').hexdigest()
'36bbe50ed96841d10443bcb670d6554f0a34b761be67ec9c4a8ad2c0c44ca42c'
>>> sha256('abcde\x80' + 57*'\x00' + '\x28').hexdigest()
'45cb103e6385e1330c892d1566d4d82f0c1c256947e54206704973c6c2adf4f6'
虽然在技术上允许计算长度不是8的倍数的消息的散列,但我非常怀疑存在真实世界的用例(需要使用只有python标准的lib) ,不能少。)