gpt4 book ai didi

Python - 将文本文件读取为字符串

转载 作者:行者123 更新时间:2023-11-28 18:35:37 24 4
gpt4 key购买 nike

我有以下 python sript,它对一个十六进制值进行双重哈希处理:

import hashlib
linestring = open('block_header.txt', 'r').read()
header_hex = linestring.encode("hex") // Problem!!!
print header_hex
header_bin = header_hex.decode('hex')
hash = hashlib.sha256(hashlib.sha256(header_bin).digest()).digest()

hash.encode('hex_codec')
print hash[::-1].encode('hex_codec')

我的文本文件“block_header.txt”(十六进制)如下所示:

0100000081cd02ab7e569e8bcd9317e2fe99f2de44d49ab2b8851ba4a308000000000000e320b6c2fffc8d750423db8b1eb942ae710e951ed797f7affc8892b0f1fc122bc7f5d74df2b9441a42a14695

不幸的是,打印变量 header_hex 的结果看起来像这样(不像 txt 文件):

303130303030303038316364303261623765353639653862636439333137653266653939663264653434643439616232623838353162613461333038303030303030303030303030653332306236633266666663386437353034323364623862316562393432616537313065393531656437393766376166666338383932623066316663313232626337663564373464663262393434316134326131343639350a

我认为问题出在这一行:

header_hex = linestring.encode("hex")

如果我删除“.encode("hex")”部分,则会出现错误

unhandled TypeError "Odd-length string"

任何人都可以提示我可能出了什么问题吗?非常感谢:)

最佳答案

您进行了过多的编码/解码。

像其他人提到的那样,如果您的输入数据是十六进制,那么最好使用 strip() 去除前导/尾随空格。

然后,您可以使用 decode('hex') 将十六进制 ASCII 转换为二进制。在执行任何您想要的散列之后,您将获得二进制摘要。

如果您希望能够“看到”该摘要,您可以使用 encode('hex') 将其转回十六进制。

以下代码适用于在开头或结尾添加任何类型的空格的输入文件。

import hashlib

def multi_sha256(data, iterations):
for i in xrange(iterations):
data = hashlib.sha256(data).digest()
return data

with open('block_header.txt', 'r') as f:
hdr = f.read().strip().decode('hex')
_hash = multi_sha256(hdr, 2)

# Print the hash (in hex)
print 'Hash (hex):', _hash.encode('hex')

# Save the hash to a hex file
open('block_header_hash.hex', 'w').write(_hash.encode('hex'))

# Save the hash to a binary file
open('block_header_hash.bin', 'wb').write(_hash)

关于Python - 将文本文件读取为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32701345/

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