[英]How to correctly do a double SHA256 hashing?
这可能是基本的东西,但对于一般的编码来说还是很新的。
您如何正确执行双 sha256 代码?
例如,对于字符串“abc”,双散列的正确输出应该是:4f8b42c22dd3729b519ba6f68d2da7cc5b2d606d05daed5ad5128cc03e6c6358
但是,在我下面提供的脚本中,我得到了另一个输出,尽管我不知道我哪里出错了。 我在代码中遗漏了什么?
abc = 'abc'.encode("utf-8")
hashed_abc = hashlib.sha256(abc)
hashed_abc = hashlib.sha256(hashed_abc.hexdigest().encode('utf-8'))
print((hashed_abc.hexdigest()))
谢谢你。
import hashlib
import binascii
def doubleSha256(hex):
bin = binascii.unhexlify(hex)
hash = hashlib.sha256(bin).digest()
hash2 = hashlib.sha256(hash).digest()
print("Input Hex: "+str(hex,"ascii"))
print("SHA256:\n "+str(binascii.hexlify(hash),"ascii"))
print("Double-SHA256:\n "+str(binascii.hexlify(hash2),"ascii"))
你可以使用这样的东西,它对我有用。
添加:
如果您在传递“abc”时遇到问题,请使用它。
ascii = "abc"
hex = binascii.hexlify(bytes(ascii,"ascii"))
doubleSha256(hex)
加密哈希函数也在处理字节和输出字节。 双 SHA256 或写为 SHA256D 也应该以这种方式工作。
import hashlib
import binascii
def SHA256D(data):
hash = hashlib.sha256(data).digest()
#Uncomment me for testing
#print(hashlib.sha256(data.encode('utf-8')).hexdigest() )
return hashlib.sha256(hash).digest()
toHashB = "hello".encode('utf-8')
print(SHA256D(toHashB))
doublehashed = SHA256D(toHashB)
print( binascii.hexlify(doublehashed).decode('utf8'))
字符串“hello”的双 SHA256 哈希在比特币页面上作为示例给出。 这输出
9595c9df90075148eb06860365df33584b75bff782a510c6cd4883a419833d50
请注意,另一个答案有两个问题;
binascii.Error: Odd-length string
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.