我正在尝试在python中实现sha-3。下面给出的代码是我如何实现它。但是我一次又一次地得到以下错误。
In [61]: l = set([('merry', 3), ('cop', 25), ('completely', 21), ('jaw', 2), ('fiddle', 1), ('bright', 4), ('593', 1), ('asked', 22), ('additionally', 4), ('pretend', 1), ('beam', 4)])
In [63]: d = {k:v for k,v in l}
In [64]: d
Out[64]:
{'593': 1,
'additionally': 4,
'asked': 22,
'beam': 4,
'bright': 4,
'completely': 21,
'cop': 25,
'fiddle': 1,
'jaw': 2,
'merry': 3,
'pretend': 1}
以下错误是我执行时得到的错误。
import sys
import hashlib
arg1 = sys.argv[1]
with open(arg1, 'r') as myfile:
data=myfile.read().replace('\n', '')
import sha3
s=hashlib.sha3_228(data.encode('utf-8')).hexdigest()
print(s)
以下链接可供参考。 https://pypi.python.org/pypi/pysha3
答案 0 :(得分:7)
这里有两个问题:一个来自您的代码,一个来自文档,其中包含您想要使用的函数的拼写错误。
您正在调用hashlib
库中不存在的函数。您希望从包含sha3_228
附带的模块sha3
调用函数pysha3
。事实上,sha3_228
不存在,存在sha3_224
。
只需将hashlib.sha3_228
替换为sha3.sha3_224
。
并确保已使用命令
安装pysha3
python -m pip install pysha3
这是一个例子
import sha3
data='maydata'
s=sha3.sha3_224(data.encode('utf-8')).hexdigest()
print(s)
# 20faf4bf0bbb9ca9b3a47282afe713ba53c9e243bc8bdf1d670671cb
答案 1 :(得分:0)
我有同样的问题。我首先自己安装了sha3。那不行然后我安装了pysha3,但仍然无法正常工作。我终于卸载了sha3和pysha3。然后我只重新安装了pysha3,它就可以正常工作。
答案 2 :(得分:-1)
您可能需要包括:
import sys
if sys.version_info < (3, 6):
import sha3
这是因为在 hashlib 中默认不包含较低版本的 python sha3。