Неверная расшифровка RSA pycryptodome

Я пытаюсь реализовать RSA в Python с помощью pycryptodome, шифрование работает нормально, но функция расшифровки нет, мой код следующий:

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)    

Я не знаю почему, потому что я думаю, что код правильный, кто-нибудь может мне помочь?


person Doe    schedule 01.11.2018    source источник
comment
Готово, загружаю cifrar   -  person Doe    schedule 01.11.2018
comment
я загружаю весь код   -  person Doe    schedule 01.11.2018


Ответы (1)


Ваша проблема заключается в том, что вы создаете два разных ключа;

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)

Подробнее см. здесь;


Примечание: обратите внимание, что объект ключа имеет две функции из-за шифрования с открытыми ключами. Вы можете записать закрытый ключ в файл, а открытый ключ в другой. Таким образом, вы можете распространять ключ. См. раздел RSAKey.

person kelalaka    schedule 01.11.2018
comment
Я точно не знаю, как изменить мой код с этой информацией - person Doe; 01.11.2018
comment
в create_KeyPair записать в файл. Затем загрузите из файла. - person kelalaka; 01.11.2018
comment
Спасибо за все, теперь работает отлично - person Doe; 01.11.2018
comment
Я думаю, что важный код — это код, который я редактирую - person Doe; 02.11.2018
comment
@Doe поместите новую часть в конец вашего вопроса с заголовком, так лучше. Пусть люди увидят оригинал и решение. - person kelalaka; 02.11.2018