Sto cercando di implementare l'algoritmo RSA in un'applicazione Android. Sto usando la funzione java.math.BigInteger.modPow()
per l'en/decryption che funziona bene per il mio Computer (Windows e Xubuntu) e il mio Raspberry Pi (anche Debian). Quando lo stesso codice viene eseguito sul mio telefono (Android 4.4.4) la seguente eccezione viene generata al 2 ° chiamata a modPow()
:Android BigInteger ArithmeticException
java.jang.ArithmeticException: error:0306B06B:bignum routines:BN_div:not initialized
at java.math.NativeBN.BN_mod_exp(NativeMethod)
at java.math.BigInt.modExp(BigInt.java:327)
at java.math.BigInteger.modPow(BigInteger.java:997)
at "where I call java.math.BigInteger.modPow()"
ho controllato l'esponente e modulo: entrambi sono positivi in modo che la documentazione doesn' davvero un aiuto. Anche la riduzione della dimensione della chiave (esponente e modulo) non ha modificato nulla. Purtroppo non sono riuscito a trovare la fonte per la funzione nativa e sono fuori di idee cosa potrebbe succedere.
Avete idea del motivo per cui questa eccezione potrebbe essere generata o cosa si intende per codice di errore?
Per curiosità, prova una versione precedente di Android (ad esempio 4.2.2) - ci sono stati molti cambiamenti in 4.4 e anche alcuni bug. –
Sembra un errore dal codice nativo openssl sottostante, il che suggerisce che si tratta di un bug di Android. –
stai usando SpongyCastle? – EpicPandaForce