Descifrado RSA con una clave pública
Tengo algunos problemas de descifrado en mi proyecto de Android.
Obtengo una cadena firmada con una clave privada y tengo que verificarla (descifrarla) con una clave pública. Me gustaría obtener exactamente el mismo resultado que si estuviera usando una función PHP: openssl_public_decrypt (http://php.net/manual/pl/function.openssl-public-decrypt.php )
Tengo que hacer esto en mi proyecto de Java, por lo que puedo usar las librerías de Java (por ejemplo, BouncyCastle, o alguna otra cosa, ¿alguna recomendación?)
¿Alguna idea de como resolver esto?
Ok, aquí está mi código. Estoy obteniendo la clave pública como esta
<code>PEMReader reader = new PEMReader(new InputStreamReader(ctx .getAssets().open("pubkey.pem"))); Object obj; while ((obj = reader.readObject()) != null) { if (obj instanceof RSAPublicKey) { pubKey = (RSAPublicKey) obj; return pubKey; } } </code>
Y siempre obtengo la clave pública sin ningún problema.
<code>Cipher c = Cipher.getInstance("RSA/NONE/NoPadding", "SC"); c.init(Cipher.DECRYPT_MODE, pubKey); byte[] result = c.doFinal(data_to_decrypt.getBytes()); </code>
Y como resultado (después de convertir bytes en cadena) obtengo022c06571c6a263b389fcd93159cb311abb880bddf51b7c916dd1ae...
donde devuelve funciones phpsd8dsa348acvcx87|00454|OK|15000|CDE
y esta es una salida correcta.