AttributeError: module 'Crypto.Cipher.DES' has no attribute 'new'
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在Python中,
Crypto.Cipher.DES.new()
函数用于创建一个新的密钥对,它基于DES算法,并返回一个字典类型的新对象,其中包含明文和密文。但是,由于Python的PEP 517标准限制了模块导入的顺序,通常情况下,在导入并定义Crypto.Cipher.DES
后,再尝试调用new()
函数会导致AttributeError
。为了解决这个问题,我们需要确保我们在使用
Crypto.Cipher.DES
之前已经正确导入了Crypto
模块。以下是相应的解决步骤:- 首先,导入所需的库:
import Crypto
- 然后,从
Crypto.Cipher
模块导入我们要操作的类,即DES
类:
from Crypto.Cipher import DES
这里我们没有指定具体的操作是创建一个新的密钥对还是加密/解密数据,因此我们可以选择两种情况进行讨论。
a. 创建新密钥对:
cipher = DES.new(key)
在这个例子中,
key
参数是你要使用的密钥,你可以将其存储在一个变量中,例如:key = b'SecretKey1234'
b. 加密/解密数据:
plaintext = b'Sixteen-bit plaintext to encrypt' ciphertext = cipher.encrypt(plaintext)
在上述示例中,
plaintext
和ciphertext
分别表示要加密和解密的数据。对于这两种情况,如果你想要创建新的密钥对并对其进行加密或解密,可以按照上述步骤执行:
new_cipher = DES.new(key) encrypted_data = new_cipher.encrypt(plaintext) decrypted_data = new_cipher.decrypt(ciphertext) # 你可以根据实际情况替换 `plaintext` 和 `ciphertext` 到具体的加密或解密操作。
具体代码实现如下:
-
如果你想创建新的密钥对并对其进行加密(如果key是一个字符串):
new_cipher = DES.new(key.encode()) encoded_plaintext = new_cipher.encrypt(plaintext.encode()) encryption_result = new_cipher.encrypt(encoded_plaintext) print(f"Encrypted text: {encryption_result.decode('utf-8')}")
-
如果你想创建新的密钥对并对其进行解密(如果key是一个字典):
new_cipher = DES.new(key.encode()) decrypted_data = new_cipher.decrypt(ciphertext.encode()) decryption_result = new_cipher.decrypt(decrypted_data.encode()) print(f"Decrypted text: {decryption_result.decode('utf-8')}")
注意:在Python中,
new()
函数返回的是字典类型的新对象,其键是加密或解密前原始数据中的每个字段,而值则是对应的明文或密文数据。如果你想获取密文,可以通过字典的keys()
属性访问,例如:print(new_cipher.keys()) # Output: ['data']
如果你在运行上述代码时遇到其他错误或不确定的情况,例如试图实例化一个不存在的类或方法、尝试在非
Cryptography
模块中导入DES
等,也可能会引发同样的AttributeError
异常。在这种情况下,你需要查看相关文档或在其他已知支持Python AES/DES加密的模块(如PyAES
或pycryptodome
)中查找相关信息,并遵循它们提供的初始化和加密/解密操作示例。解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 java 的protected权限 ,问题在注释里
- ¥15 这个是哪里有问题啊?
- ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
- ¥15 texstudio的问题,
- ¥15 spaceclaim模型变灰色
- ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
- ¥15 就很莫名其妙,本来正常的Excel,突然变成了这种一格一页
- ¥15 字符串比较代码的漏洞
- ¥15 欧拉系统opt目录空间使用100%
- ¥15 ul做导航栏格式不对怎么改?