【发布时间】:2021-08-05 21:11:52
【问题描述】:
我正在尝试制作一个通过random 生成10 个数字的简单程序。然后,它将它们传递给hashlib,它对这些随机数进行 SHA-256。最后,哈希值会显示给用户。
这是我的代码:
import random
import hashlib
number1 = random.randint(0, 999999999999)
number2 = random.randint(0, 999999999999)
number3 = random.randint(0, 999999999999)
number4 = random.randint(0, 999999999999)
number5 = random.randint(0, 999999999999)
number6 = random.randint(0, 999999999999)
number7 = random.randint(0, 999999999999)
number8 = random.randint(0, 999999999999)
number9 = random.randint(0, 999999999999)
number10 = random.randint(0, 999999999999)
result1 = hashlib.sha256(number1)
result2 = hashlib.sha256(number2)
result3 = hashlib.sha256(number3)
result4 = hashlib.sha256(number4)
result5 = hashlib.sha256(number5)
result6 = hashlib.sha256(number6)
result7 = hashlib.sha256(number7)
result8 = hashlib.sha256(number8)
result9 = hashlib.sha256(number9)
result10 = hashlib.sha256(number10)
print("Hash 1:", result1)
print("Hash 2:", result2)
print("Hash 3:", result3)
print("Hash 4:", result4)
print("Hash 5:", result5)
print("Hash 6:", result6)
print("Hash 7:", result7)
print("Hash 8:", result8)
print("Hash 9:", result9)
print("Hash 10:", result10)
PyCharm 说没问题。但是,当你运行它时,它会抛出这个错误:
C:\Users\WINDOWS\Documents\PyToC\venv\Scripts\python.exe C:/Users/WINDOWS/Documents/PyToC/build/aquamine.py
Traceback (most recent call last):
File "C:/Users/WINDOWS/Documents/PyToC/build/aquamine.py", line 15, in <module>
result1 = hashlib.sha256(number1)
TypeError: object supporting the buffer API required
Process finished with exit code 1
为什么会这样?有什么办法可以解决。
【问题讨论】:
-
您需要一个类似对象的字节作为参数,而不是数字:docs.python.org/3/library/hashlib.html
-
如何将数字转换为字节? encode() 似乎不起作用。
-
bytes(str(num), 'utf-8')大概? -
有效!谢谢。