Я написал скрипт на python, который реализует шифрование и дешифрование.Для отправки ключа для зашифрованных данных получателю программа использует шифрование и дешифрование открытого ключа RSA на случайно сгенерированном ключе.
Ниже приведены методы шифрования и дешифрования в скрипте Python, которые я использовал для шифрования и дешифрования ключа с помощью открытых / закрытых ключей:
from Crypto.Cipher import PKCS1_OAEP
def encrypt_public_key(msg, public_key):
cipher = PKCS1_OAEP.new(public_key)
return cipher.encrypt(msg)
def decrypt_private_key(msg, private_key):
cipher = PKCS1_OAEP.new(private_key)
return cipher.decrypt(msg)
Моя программа должна взаимодействовать с программой одноклассников,однако этот человек написал свою программу как bash-скрипт, используя следующую команду для шифрования и дешифрования:
openssl rsautl -encrypt -inkey id_rsa.pub.pem -pubin -in key.bin -out key.bin.enc
openssl rsautl -decrypt -inkey id_rsa.pem -in key.bin.enc -out key.bin
Когда моя программа пытается расшифровать зашифрованный ключ моих одноклассников, я получаю эту ошибку:
File "[script-path]", line 54, in decrypt_private_key
return cipher.decrypt(msg)
File "C:\[path_to_python]\Python37-32\lib\site-packages\Crypto\Cipher\PKCS1_OAEP.py", line 167, in decrypt
raise ValueError("Ciphertext with incorrect length.")
ValueError: Ciphertext with incorrect length.
Я полагаю, что это означает, что наши сценарии не используют один и тот же шифр, я прав с этим предположением?Однако я не могу найти, какой шифр используется для сценария bash (и мой одноклассник тоже не знает), и я пытаюсь найти способ использовать другой шифр с модулем Python Crypto.
Я пыталсяпереключите мои методы шифрования и дешифрования на что-то похожее на это:
from Crypto.PublicKey import RSA
def encrypt_public_key(msg, public_key):
return public_key.encrypt(msg, 32)
def decrypt_private_key(msg, private_key):
return private_key.decrypt(msg)
Но это дает мне следующую ошибку:
File "[script_path]", line 52, in decrypt_private_key
return private_key.decrypt(msg)
File "[python-path]\Python37-32\lib\site-packages\Crypto\PublicKey\RSA.py", line 378, in decrypt
raise NotImplementedError("Use module Crypto.Cipher.PKCS1_OAEP instead")
NotImplementedError: Use module Crypto.Cipher.PKCS1_OAEP instead
Какой шифр (PKCS1_OAEP) не работает сзашифрованный ключ от моего одноклассника.
Есть ли у вас какие-либо предложения о том, что я могу сделать, чтобы решить эту проблему?Проблема в том, что мы используем разные шифры и есть ли способ переключить мой шифр или мне нужно переключиться с моего модуля Python Crypto?