This is my code for encrypting a file:
我收到以下错误" cipher_aes = AES.new(session_key,AES.MODE_EAX) AttributeError:'模块'对象没有属性' MODE_EAX'" 如果我删除" AES.MODE_EAX"从NO 10行开始,我在第12行收到以下错误(密文,标签= cipher_aes.encrypt_and_digest(数据) AttributeError:AESCipher实例没有属性' encrypt_and_digest')
from Crypto.PublicKey import RSA
from Crypto.Random import get_random_bytes
from Crypto.Cipher import AES, PKCS1_OAEP
with open('encrypted_data.bin', 'wb') as out_file:
recipient_key = open('public.pem').read()
recipient_key=RSA.importKey(recipient_key)
session_key = get_random_bytes(16)
cipher_rsa = PKCS1_OAEP.new(recipient_key)
out_file.write(cipher_rsa.encrypt(session_key))
cipher_aes = AES.new(session_key, AES.MODE_EAX)
data = b'blah blah blah Python blah blah'
ciphertext, tag = cipher_aes.encrypt_and_digest(data)
out_file.write(cipher_aes.nonce)
out_file.write(tag)
out_file.write(ciphertext)
答案 0 :(得分:1)
我在the documentation的任何地方都没有看到密码模式EAX。这表明在目前的稳定版本(2.6.1)中PyCrypto不支持它。
然而,浏览the source code我看到MODE_EAX
存在。因此,您可以尝试使用支持MODE_EAX
的{{3}},2.7.1。
但根据您对encrypt_and_digest
的使用情况,我猜你会使用不是基于pycrypto而是使用PyCryptodome的代码。我个人不熟悉图书馆,但它具有您尝试使用的功能。你可以the latest experimental build。