【问题标题】:Calling a function that returns a hash value: AttributeError: 'tuple' object has no attribute 'encode' [closed]调用返回哈希值的函数:AttributeError:'tuple'对象没有属性'encode'[关闭]
【发布时间】:2021-09-19 23:02:22
【问题描述】:

我有以下代码(开发中)并且遇到了错误。据我所知,我正在将文本传递给 SHA256 函数,但它表明它是一个元组。

from hashlib import sha256
MAX_NONCE=10000

def SHA256(text):
  return sha256(text.encode("ascii")).hexdigest() #returns a hash value
  
def mine(blockno,transactions,previous_hash,prefix):
  nonce=1
  
  text=str(blockno)+transactions+previous_hash+str(nonce)
  new_hash=SHA256(text)
  print(new_hash)



#STARTING POINT OF THE PROGRAM

transaction =""" 
STUFF HERE

   """
difficulty=3
newhash = mine(7,transaction,"F823482798723897293874982734982F",difficulty)

错误

Traceback (most recent call last):
  File "main.py", line 24, in <module>
    newhash = mine(7,transaction,"F823482798723897293874982734982F",difficulty)
  File "main.py", line 11, in mine
    new_hash=SHA256(text)
  File "main.py", line 5, in SHA256
    return sha256(text.encode("ascii")).hexdigest() #returns a hash value
UnicodeEncodeError: 'ascii' codec can't encode character '\xa3' in position 29: ordinal not in range(128)

repl.it https://replit.com/@teachyourselfpython/WiltedLawngreenInvocation#main.py

【问题讨论】:

  • text=str(blockno)+transactions,previous_hash+str(nonce) 是错字吗?似乎与中间的, 同为+
  • 是的,请参阅更新 :)
  • 如果只是拼写错误,您可以删除问题。如果你现在有一个完全不同的错误,也许可以问一个不同的问题,而不是把这个问题改得面目全非。
  • 我用固定的错字运行了你的代码,它运行良好。我认为这个问题值得删除。
  • 更新了问题以反映当前的错误

标签: python hash encode sha256


【解决方案1】:

这取决于您输入 SHA256(文本)的参数。

文本必须是字符串才能使 encode() 工作。

您也可以尝试处理元组。

def SHA256(text):
    if type(text) == str:
        return sha256(text.encode("ascii")).hexdigest() #returns a hash value
    else:
        list_of_hashes = []
        for each in text:
            list_of_hashes.append(sha256(text.encode("ascii")).hexdigest())
        return list_of_hashes

【讨论】:

  • 你能解释一下为什么文本不是文本吗?据我所知。
  • 例如,这是完全相同的事情(文本的生成),它工作正常,没有元组错误。 replit.com/@teachyourselfpython/BitcoinSHA256withoutcomments
  • 不知道为什么你被否决了。我仍然收到元组错误,没有人解释它。 SHA256 是否只接受文本,而不是文本(变量)文本!
  • 您的错误更改为:'ascii' codec can't encode character '\xa3'
  • 编辑问题后,错误不再是元组错误
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2022-01-22
  • 2021-03-18
  • 1970-01-01
相关资源
最近更新 更多