RSA-Entschlüsselung mit einem öffentlichen Schlüssel
Ich habe einige Entschlüsselungsprobleme in meinem Android-Projekt.
Ich bekomme einen String mit einem privaten Schlüssel signiert und muss ihn mit einem öffentlichen Schlüssel verifizieren (entschlüsseln). Ich möchte genau das gleiche Ergebnis erhalten, als ob ich eine PHP-Funktion verwenden würde - openssl_public_decrypt (http://php.net/manual/pl/function.openssl-public-decrypt.php )
Ich muss dies in meinem Java-Projekt tun, damit ich Java-Bibliotheken verwenden kann (z. B. BouncyCastle oder etwas anderes, irgendwelche Empfehlungen?)
Irgendwelche Ideen, wie man das löst?
Ok, hier ist mein Code. Ich bekomme den öffentlichen Schlüssel so
<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>
Und ich bekomme immer den öffentlichen Schlüssel ohne Probleme.
<code>Cipher c = Cipher.getInstance("RSA/NONE/NoPadding", "SC"); c.init(Cipher.DECRYPT_MODE, pubKey); byte[] result = c.doFinal(data_to_decrypt.getBytes()); </code>
Und als Ergebnis (nach der Konvertierung von Bytes in Zeichenfolge) bekomme ich022c06571c6a263b389fcd93159cb311abb880bddf51b7c916dd1ae...
wo PHP-Funktionen zurückgibtsd8dsa348acvcx87|00454|OK|15000|CDE
und das ist eine korrekte Ausgabe.