【问题标题】:Sha-3 in python implementationpython实现中的Sha-3
【发布时间】:2017-07-18 05:37:05
【问题描述】:

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

【问题讨论】:

  • 您正在尝试使用它,而不是实现它。实现意味着编写执行实际哈希计算的代码。这不是你在这里做的。

标签: python sha-3 keccak


【解决方案1】:

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

您正在调用hashlib 库中不存在的函数。您想从模块sha3 调用函数sha3_228,该模块与包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

【讨论】:

  • 这里的小提示:Sha3 在 Python 3.6 中受支持(以及一些其他添加的算法)
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您可能需要包括:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-04
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2020-03-12
      • 2018-07-22
      • 1970-01-01
      相关资源
      最近更新 更多