pycrypto, шифрующий закрытый ключ с помощью ключа publi c, а затем расшифровка вызывает мусор - PullRequest
1 голос
/ 05 мая 2020

Я пытался установить безопасное соединение через сокет, но когда я создаю закрытый ключ и создаю pubkey из закрытого ключа и создаю еще один закрытый ключ, затем зашифровываю другой закрытый ключ с помощью pubkey и расшифровываю его первым закрытым ключом, это дает мне мусор

priv_key=RSA.generate(1024)
pub_key=priv_key.publickey()
another_priv_key=RSA.generate(1024)
priv_key.decrypt(pub_key.encrypt(another_priv_key.exportKey('PEM'),32))

output:b')O\xa5\xf9\xa5k%z\x10S.\x13\x06@\x83i\x1eI\xc6R\x1a\xa5}{h\x9aW0R\t\xa9\xf1\xdb\xe3\xdc\x1b\xd0\xe54\xb1\xf0^\x93 \xb6\x93\x16\xed\x98d8\xec6\xe2B\xde\x87(\xf7\xce\x9a)\x99ZR\xae$T\x1b\x19<\x12e\xfc\xd4\x92\xf3\x82l\x81ed,\xf4{CH\xe0\xd2\xdb\x0b#\xde9: ?\xea\x99\xe9\xd8\xe6\xca\xadFs\xa6\xc6\xc9x#\x96h\xf0\x83\x7f\xd25\xa4)Iv\xa6]\x15%5\x96'

1 Ответ

1 голос
/ 05 мая 2020

Вы пытаетесь зашифровать слишком длинный открытый текст. RSA с 1024-битным модулем должен примерно управлять строкой из 128 символов, но ваш защищенный ASCII закрытый ключ, вероятно, будет содержать что-то ближе к 1000 символов.

Вы можете зашифровать ключ отдельными частями, если хотите .

>>> priv_key.decrypt(pub_key.encrypt(another_priv_key.exportKey('PEM')[:128],32))
'-----BEGIN RSA PRIVATE KEY-----\nMIICXQIBAAKBgQCgoIPQspwO6DdHc9nGN6r9+qlMpFP+0PCik4QjbRzktX2U98sy\n2hZKXTjEj02+/bhJGL8dP63JDJQBWNL'
...