gpt4 book ai didi

python - 在Python中解压ripemd160结果

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:03 24 4
gpt4 key购买 nike

我正在开发一个进行大量哈希处理的程序,在其中一个步骤中,我获取 hashlib 的ripemd160 哈希结果并将其转换为整数。这些行是:

ripe_fruit = new('ripemd160', sha256(key.to_der()).digest())
key_hash160 = struct.unpack("<Q", ripe_fruit.digest())[0]

它给了我错误:

struct.error: unpack requires a buffer of 8 bytes

我尝试将值更改为 L 和其他内容,但它们不起作用。我该如何解决这个问题?

最佳答案

RIPEMD-160 返回 160 位,即 20 个字节。 struct不知道如何解压大于 8 字节的整数。您有两种选择,正确的一种取决于您到底想要做什么。

  1. 如果您的算法仅查找哈希的某些字节,您可以获取前 8 个字节或后 8 个字节并将其解压。

     key_hash160 = struct.unpack("<Q", ripe_fruit.digest()[:8])[0]
  2. 如果您需要一个 160 字节的整数,您首先必须决定如何表示它。是小端还是大端还是介于两者之间?然后,您可以将数组分成 20 个字节,然后从中计算一个数字。假设基于<的小端序在你的问题中,你可以这样做:

     key_parts = struct.unpack("B" * 20, ripe_fruit.digest())
    key_hash160 = 0
    for b in key_parts[::-1]:
    key_hash160 <<= 8
    key_hash160 |= b

关于python - 在Python中解压ripemd160结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com