不正确的解密 RSA pycryptodome
Incorrect decryption RSA pycryptodome
我尝试在 Python 中使用 pycryptodome 实现 RSA,加密工作正常但解密功能不行,我的代码如下:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Signature import pss
from Crypto.Hash import SHA256
class RSA_OBJECT:
def create_KeyPair(self):
self.key = RSA.generate(self.KEY_LENGTH)
def save_PrivateKey(self, file, password):
key_cifrada = self.key.export_key(passphrase=password, pkcs=8,protection="scryptAndAES128-CBC")
file_out = open(file, "wb")
file_out.write(key_cifrada)
file_out.close()
def load_PrivateKey(self, file, password):
key_cifrada = open(file, "rb").read()
self.private_key = RSA.import_key(key_cifrada, passphrase=password)
def save_PublicKey(self, file):
key_pub = self.key.publickey().export_key()
file_out = open(file, "wb")
file_out.write(key_pub)
file_out.close()
def load_PublicKey(self, file):
key_publica = open(file, "rb").read()
self.public_key = RSA.import_key(key_publica)
我不知道为什么,因为我认为代码是正确的,谁能帮助我?
你的问题是你生成了两个不同的密钥;
self.public_key = RSA.generate(self.KEY_LENGTH)
self.private_key = RSA.generate(self.KEY_LENGTH)
你应该;
key = RSA.generate(self.KEY_LENGTH)
和
private_key = key.export_key()
file_out = open("private.pem", "wb")
file_out.write(private_key)
public_key = key.publickey().export_key()
file_out = open("receiver.pem", "wb")
file_out.write(public_key)
详见here;
注意: 请注意,由于 public 密钥加密,密钥对象具有两个功能。您可以将私钥写入一个文件,然后将 public 密钥写入另一个文件。这样,您就可以分发密钥了。参见 RSAKey。
我尝试在 Python 中使用 pycryptodome 实现 RSA,加密工作正常但解密功能不行,我的代码如下:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Signature import pss
from Crypto.Hash import SHA256
class RSA_OBJECT:
def create_KeyPair(self):
self.key = RSA.generate(self.KEY_LENGTH)
def save_PrivateKey(self, file, password):
key_cifrada = self.key.export_key(passphrase=password, pkcs=8,protection="scryptAndAES128-CBC")
file_out = open(file, "wb")
file_out.write(key_cifrada)
file_out.close()
def load_PrivateKey(self, file, password):
key_cifrada = open(file, "rb").read()
self.private_key = RSA.import_key(key_cifrada, passphrase=password)
def save_PublicKey(self, file):
key_pub = self.key.publickey().export_key()
file_out = open(file, "wb")
file_out.write(key_pub)
file_out.close()
def load_PublicKey(self, file):
key_publica = open(file, "rb").read()
self.public_key = RSA.import_key(key_publica)
我不知道为什么,因为我认为代码是正确的,谁能帮助我?
你的问题是你生成了两个不同的密钥;
self.public_key = RSA.generate(self.KEY_LENGTH)
self.private_key = RSA.generate(self.KEY_LENGTH)
你应该;
key = RSA.generate(self.KEY_LENGTH)
和
private_key = key.export_key()
file_out = open("private.pem", "wb")
file_out.write(private_key)
public_key = key.publickey().export_key()
file_out = open("receiver.pem", "wb")
file_out.write(public_key)
详见here;
注意: 请注意,由于 public 密钥加密,密钥对象具有两个功能。您可以将私钥写入一个文件,然后将 public 密钥写入另一个文件。这样,您就可以分发密钥了。参见 RSAKey。