NotImplementedError: Use module Crypto.Cipher.PKCS1_OAEP instead error
NotImplementedError: Use module Crypto.Cipher.PKCS1_OAEP instead error
我正在尝试在 Python 中进行 RSA 加密。所以我生成了一个 public/private 密钥,使用 public 密钥加密消息并将密文写入文本文件。我使用的代码如下:
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_OAEP
、from Crypto.Cipher.PKCS1_OAEP import RSA
、from Crypto.Cipher.PKCS1_OAEP import Random
、from Crypto.Cipher.PKCS1_OAEP import ast
以及 import Crypto.Cipher
和 none 的帮助。
我尝试了 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 的实例,并将其用于 encrypt/decrypt 您的消息。
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 中进行 RSA 加密。所以我生成了一个 public/private 密钥,使用 public 密钥加密消息并将密文写入文本文件。我使用的代码如下:
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_OAEP
、from Crypto.Cipher.PKCS1_OAEP import RSA
、from Crypto.Cipher.PKCS1_OAEP import Random
、from Crypto.Cipher.PKCS1_OAEP import ast
以及 import Crypto.Cipher
和 none 的帮助。
我尝试了 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 的实例,并将其用于 encrypt/decrypt 您的消息。
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)))