在python实现中的Sha-3

时间:2017-07-18 05:37:06

标签: python sha-3 keccak

我正在尝试在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

3 个答案:

答案 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。