Java a Python RSA
-
21-09-2019 - |
Domanda
Sto cercando di crittografare una stringa da Java a Python, utilizzando la libreria Bouncy Castle J2ME sul lato client e Python M2Crypto dall'altra.
Tutto è abbastanza buono, posso decifrare correttamente, ma l'imbottitura è il problema.
Il lib M2Crypto mi dà (per quanto posso dire) solo questi schemi padding: no_padding = 3 pkcs1_padding = 1 sslv23_padding = 2 pkcs1_oaep_padding = 4
Mentre il castello gonfiabile J2ME fornisce solo: NoPadding OAEPWithAndPadding PKCS5Padding SSL3Padding
Quindi, posso usare NoPadding tra i due, ma poi le corde che vengono generati dopo la decrittazione sono pieni di personaggi caotici.
Mi piacerebbe davvero ottenere l'imbottitura risolto, ma non so come convertire tra i sistemi di imbottitura / se questo è ancora possibile.
Ti prego, aiutami a capire questo fuori, mi sta uccidendo!
Soluzione
Non ho dimestichezza con il castello gonfiabile, ma immagino che si utilizza in qualche modo RSAEngine
che implementa AsymmetricBlockCipher
così si dovrebbe essere in grado di utilizzare PKCS1
o no?
E ci sembra anche essere OAEP
sostegno, che dato i giusti parametri dovrebbe anche funzionare.
Altri suggerimenti
Castello gonfiabile fornisce imbottitura. Se si desidera, ad esempio per fare una RSA con imbottitura PKCS1 devi fare questo:
public static PKCS1Encoding create_rsa_public(RSAKeyParameters PublicKey){
RSAEngine engine=new RSAEngine();
PKCS1Encoding encrypto=new PKCS1Encoding(engine);
encrypto.init(true,PublicKey);
return encrypto;
}
Questa funzione restituisce un motore si RSA con PKCS1Encoding.