【问题标题】:python's cryptography throwing AttributeError: 'int' object has no attribute 'value'python的密码学抛出AttributeError:'int'对象没有属性'value'
【发布时间】:2018-10-15 06:02:21
【问题描述】:

我正在尝试执行以下代码:

from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(b"A really secret message. Not for prying eyes.")
plain_text = cipher_suite.decrypt(cipher_text)
print plain_text

获取:

C:\Python27\python.exe E:/PycharmProjects/my_project/utils/encryption.py
Traceback (most recent call last):
  File "E:/PycharmProjects/my_project/utils/encryption.py", line 3, in <module>
    cipher_suite = Fernet(key)
  File "C:\Python27\lib\site-packages\cryptography\fernet.py", line 32, in __init__
    backend = default_backend()
  File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\__init__.py", line 15, in default_backend
    from cryptography.hazmat.backends.openssl.backend import backend
  File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\openssl\__init__.py", line 7, in <module>
    from cryptography.hazmat.backends.openssl.backend import backend
  File "C:\Python27\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 16, in <module>
    from cryptography import utils, x509
  File "C:\Python27\lib\site-packages\cryptography\x509\__init__.py", line 8, in <module>
    from cryptography.x509.base import (
  File "C:\Python27\lib\site-packages\cryptography\x509\base.py", line 16, in <module>
    from cryptography.x509.extensions import Extension, ExtensionType
  File "C:\Python27\lib\site-packages\cryptography\x509\extensions.py", line 24, in <module>
    from cryptography.x509.general_name import GeneralName, IPAddress, OtherName
  File "C:\Python27\lib\site-packages\cryptography\x509\general_name.py", line 18, in <module>
    from cryptography.x509.name import Name
  File "C:\Python27\lib\site-packages\cryptography\x509\name.py", line 28, in <module>
    _ASN1_TYPE_TO_ENUM = dict((i.value, i) for i in _ASN1Type)
  File "C:\Python27\lib\site-packages\cryptography\x509\name.py", line 28, in <genexpr>
    _ASN1_TYPE_TO_ENUM = dict((i.value, i) for i in _ASN1Type)
AttributeError: 'int' object has no attribute 'value'

Process finished with exit code 1

文件路径为:my_project/utils/encryption.py

在“utils”包之外或在 python 控制台中运行相同的代码可以正常工作。 可能是什么问题?

【问题讨论】:

  • 当它工作正常时,你检查过python版本吗?
  • 我使用的是 python 2.7.13。为了使其正常工作,我只需将文件从 root/utils/file.py 移动到 root/file.py 就可以了!

标签: python python-3.x python-2.7 cryptography


【解决方案1】:

加密代码需要 Python 3 枚举:https://pypi.python.org/pypi/enum34。这就是你遇到这个问题的原因。

我建议验证您的版本是否正确并且没有被另一个模块替换。

【讨论】:

  • "如果您还有其他问题,请告诉我。"你可能应该编辑它。 Stackoverflow 是一个问答网站,而不是一个常规论坛(您可能知道,因为您在这里很有经验)。这似乎是正确的答案,但也许你可以详细说明。看起来非常像“类似评论的答案”。可惜。
  • @Jonathan Gagne - 我已经安装了 enum34。还尝试重新安装它。还是不行。
  • 可能相关的事情:我的“utils”包中有一个模块“enum.py”。这是我自己实现的一个模块,而不是 enum34。可能是密码学试图使用它而不是 enum34 吗?
【解决方案2】:

问题是我有一个名为 enum.py 的模块以及加密代码(相同的包)。密码学试图使用它而不是 enum34。 将“enum.py”重命名为其他内容即可解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    相关资源
    最近更新 更多