デバイスで生成された RSA キーを使用して、Android アプリケーションで文字列を復号化しようとしています。暗号化は、私のアプリケーションによって提供された公開 RSA キーを使用して、php サービスによって行われます。私の問題は復号化にあり、失敗します。
私は次のことをしています:
Android での KeyPair の生成 (KeyPairGenerator.getInstance("RSA") を使用) -> OK
両方の鍵 (公開鍵と秘密鍵) は、Base64.encode(pubKey.getEncoded()) で「base64」エンコードされた後、秘密鍵と同じようにファイルに保存されます。-> OK
Web サービスを呼び出すときに、公開鍵 (base 64) を post 変数に渡します -> OK
Web サービス (PHP サービス) は、openssl_public_encrypt 関数で公開鍵を使用して短い文字列を暗号化します。暗号化された文字列は base64 に変換されます。-> OK のようです。関数は FALSE を返しません。
アプリケーションはサービスの結果を取得し、それをデコードします (Base64.decode()) -> OK (確認しました。受信したバイトは openssl_public_encrypt() 関数によって生成されたものと一致します)
最後に、この文字列を復号化します。次のことを行っています: -> NOT OK
暗号 cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedBytes = cipher.doFinal(cryptedBytes);
文字列復号文字列 = 新しい文字列 (decryptedBytes);
System.out.println(decryptedString);
復号化の結果が元の文字列と一致しません。
何か不足していますか?