Java to Python RSA
-
21-09-2019 - |
Вопрос
Я пытаюсь зашифровать строку от Java до Python, используя библиотечный бодрый замок J2ME на стороне клиента и Python M2Crypto с другой.
Все довольно хорошо, я могу расшифровать это должным образом, но заполнение - это проблема.
M2Crypto LIB дает мне (насколько я могу судить) только эти схемы накладки: no_padding = 3 pkcs1_padding = 1 sslv23_padding = 2 pkcs1_oaep_padding = 4
В то время как Bouncy Castle J2me предоставляет: Nopadding oaepwithandpadding pkcs5padding ssl3padding
Таким образом, я могу использовать NoPadding между обоими, но затем строки, которые генерируются после дешифрования, заполнены беспорядочными символами.
Я бы очень хотел разобраться с прокладкой, но я не знаю, как конвертировать между схемами прокладки / если это даже возможно.
Пожалуйста, помогите мне понять это, это убивает меня!
Решение
Я не знаком с бодрым замком, но я думаю, вы как -то используете RSAEngine
что реализует AsymmetricBlockCipher
Таким образом, вы должны иметь возможность использовать PKCS1
или нет?
И там, кажется, есть OAEP
Поддержка, которая, учитывая правильные параметры, также должна работать.
Другие советы
Бодрый замок обеспечивает заполнение. Если вы хотите, например, сделать RSA с накладной PKCS1, вы должны сделать это:
public static PKCS1Encoding create_rsa_public(RSAKeyParameters PublicKey){
RSAEngine engine=new RSAEngine();
PKCS1Encoding encrypto=new PKCS1Encoding(engine);
encrypto.init(true,PublicKey);
return encrypto;
}
Эта функция вернет вам двигатель RSA с PKCS1ENCODING.