import hashlib
用于调用sha256来进行hash值的计算
hash = hashlib.sha256()
hash.update(b'test_test')
print(hash.hexdigest())
输出的即为“test_test”的hash值
sha256()能创建一个SHA-256对象。然后就可以使用通用的update()方法将bytes类型的数据添加到对象里,最后通过digest()或者hexdigest()方法获得当前的摘要。
hash.digest() # 获得bytes类型的消息摘要
hash.hexdigest() # 获得16进制str类型的消息摘要
hash.digest_size # 查看消息摘要的位长
hash.block_size # 查看消息摘要的内部块大小
hash.update(arg)
更新hash对象。连续的调用该方法相当于连续的追加更新。
例如:
hash.update(a)
hash.update(b)
相当于hash.update(a+b)
由于消息摘要是只针对当前状态产生的,所以每一次update后,再次计算hexdigest()的值都会不一样。
分别产生a,b摘要的方式:
hash = hashlib.sha256()
hash.update(b'a')
print(hash.hexdigest())
hash = hashlib.sha256()
hash.updata(b'b')
print(hash.hexdigest())
二次hash
即merkle Tree中对已经产生的hash值两两合并再次计算新的hash值
hash = hashlib.sha256()
hash.update(b'tr1')
tr1 = hash.hexdigest()
hash = hashlib.sha256()
tr11 = str(tr1).encode()
hash.update(tr11)
print(hash.hexdigest())