python 实施中的 Sha-3

Sha-3 in python implementation

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

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'

下面link可以参考。 https://pypi.python.org/pypi/pysha3

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

您正在调用 hashlib 库中不存在的函数。您想要从包 pysha3 附带的模块 sha3 调用函数 sha3_228。其实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

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

您可能需要包括:

import sys

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

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