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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top