解密不正确的RSA pycryptodome

时间:2018-11-01 10:19:54

标签: python encryption rsa pycryptodome

我尝试使用pycryptodome在Python中实现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)    

我不知道为什么,因为我认为代码是正确的,任何人都可以帮助我?

1 个答案:

答案 0 :(得分:1)

您的问题会生成两个不同的密钥;

{"recordsets":[[{"ID":1,"Machine":"TRUMPF 5000","StartTime":"2018-11-01T15:28:51.000Z","EndTime":"2018-11-01T15:52:11.000Z","LengthTime":271,"Day":"Day","JobNumber":null}]]

您应该;

self.public_key = RSA.generate(self.KEY_LENGTH)
self.private_key = RSA.generate(self.KEY_LENGTH)

key = RSA.generate(self.KEY_LENGTH)

更多信息,请参见here


注意:请注意,由于公共密钥加密,密钥对象具有两种功能。您可以将私钥写入文件,将公钥写入另一个文件。这样,您可以分发密钥。参见RSAKey