4

我正在尝试在python中实现sha-3。下面给出的代码是我实现它的方式。但是我一次又一次地收到以下错误。

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)

以下错误是我执行它时得到的。

Traceback (most recent call last):
File "sha3.py", line 6, in <module>
import sha3
File "/home/hello/Documents/SHA-3/sha3.py", line 7, in <module>
s=hashlib.sha3_228(data.encode('utf-8')).hexdigest()
AttributeError: 'module' object has no attribute 'sha3_228'

以下链接可供参考。 https://pypi.python.org/pypi/pysha3

4

3 回答 3

11

这里有两个问题:一个来自您的代码,另一个来自文档,其中包含您要使用的函数的拼写错误。

您正在调用库中不存在的hashlib函数。您想从package 附带的sha3_228模块中调用函数。其实不存在,就是存在。sha3pysha3sha3_228sha3_224

只需替换hashlib.sha3_228sha3.sha3_224.

并确保您已安装pysha3,使用命令

python -m pip install pysha3

这是一个例子

import sha3
data='maydata'
s=sha3.sha3_224(data.encode('utf-8')).hexdigest()
print(s)
# 20faf4bf0bbb9ca9b3a47282afe713ba53c9e243bc8bdf1d670671cb
于 2017-07-18T05:45:42.697 回答
1

我有同样的问题。我先自己安装了sha3。那是行不通的。然后我安装了 pysha3 还是不行。我终于卸载了 sha3 和 pysha3。然后我重新安装了 pysha3,它工作正常。

于 2019-09-07T02:11:02.173 回答
-1

您可能需要包括:

import sys

if sys.version_info < (3, 6):
    import sha3

这是因为低版本的 python sha3 默认不包含在 hashlib 中。

于 2021-07-04T07:11:00.673 回答