python - NotImplementedError : Use module Crypto. Cipher.PKCS1_OAEP 而不是错误

标签 python python-3.x encryption rsa

我正在尝试在 Python 中进行 RSA 加密。所以我生成了一个公钥/私钥,使用公钥加密消息并将密文写入文本文件。我使用的代码如下:

from Crypto.PublicKey import RSA
from Crypto import Random
import ast

random_generator = Random.new().read
key = RSA.generate(1024, random_generator)  

publickey = key.publickey()  

encrypted = publickey.encrypt('encrypt this message', 32)

print('encrypted message:', encrypted)
f = open('encryption.txt', 'w')
f.write(str(encrypted))
f.close()

f = open('encryption.txt', 'r')
message = f.read()

decrypted = key.decrypt(ast.literal_eval(str(encrypted)))

print('decrypted', decrypted)

f = open('encryption.txt', 'w')
f.write(str(message))
f.write(str(decrypted))
f.close()

但是现在当我运行应用程序时,出现以下错误:

Traceback (most recent call last):
  File "C:/Users/RedCode/PycharmProjects/AdvancedApps/Encryption/RSA Example.py", line 10, in <module>
    encrypted = publickey.encrypt('encrypt this message', 32)
  File "C:\Users\RedCode\AppData\Local\Programs\Python\Python36-32\lib\site-packages\Crypto\PublicKey\RSA.py", line 390, in encrypt
    raise NotImplementedError("Use module Crypto.Cipher.PKCS1_OAEP instead")
NotImplementedError: Use module Crypto.Cipher.PKCS1_OAEP instead

无论我如何尝试实现 Crypto.Cipher.PKCS1_OAEP,错误仍然存​​在。我试过导入 Crypto.Cipher.PKCS1_OAEPfrom Crypto.Cipher.PKCS1_OAEP import RSAfrom Crypto.Cipher.PKCS1_OAEP import Randomfrom Crypto.Cipher.PKCS1_OAEP import astimport Crypto.Cipher 都没有帮助。

我尝试了 from Crypto.Cipher.PKCS1_OAEP import RSA 但错误是:

Traceback (most recent call last):
  File "C:/Users/RedCode/PycharmProjects/AdvancedApps/Encryption/RSA Example.py", line 3, in <module>
    from Crypto.Cipher.PKCS1_OAEP import RSA
ImportError: cannot import name 'RSA'

我检查了我的文件,我确实有 RSA 包。

我该如何解决这个问题?

最佳答案

您需要使用 new 创建一个 PKCS1_OAEP 实例,并使用它来加密/解密您的消息。

from Crypto.Cipher import PKCS1_OAEP

encryptor = PKCS1_OAEP.new(publickey)
encrypted = encryptor.encrypt(b'encrypt this message')

解密也一样

decryptor = PKCS1_OAEP.new(key)
decrypted = decryptor.decrypt(ast.literal_eval(str(encrypted)))

关于python - NotImplementedError : Use module Crypto. Cipher.PKCS1_OAEP 而不是错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44427934/

相关文章:

java - 从 PKCS1 key 获取 RSA 公钥

ssl - 如何在 WildFly 中启用某些密码套件?

python - 来自字典的稀疏矩阵

mysql - id 主键是否必须在从检查数据库生成的 Django 模型中针对现有数据库显式定义?

Python 参数解析 : Increase space between parameter and description

python - Python 查找两个元组中的对应项

ajax - Coldfusion 在组件中的函数内加密和解密

python - Dask 和 Numba - 如何有效地使用 map 分区?

python - 无法使用 Python 创建超过 1 个类实例

python - 在 python 中拆分列表