Android プロジェクトで復号化の問題が発生しました。
秘密鍵で署名された文字列を取得しており、公開鍵で検証 (復号化) する必要があります。PHP 関数 - openssl_public_decrypt ( http://php.net/manual/pl/function.openssl-public-decrypt.php )を使用している場合とまったく同じ結果を得たいと思います。
Java プロジェクトでこれを行う必要があるため、Java ライブラリを使用できます (たとえば、BouncyCastle など、何か推奨事項はありますか?)
これを解決する方法はありますか?
わかりました、これが私のコードです。私はこのように公開鍵を取得しています
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;
}
}
そして、私はいつも問題なく公開鍵を取得しています。
Cipher c = Cipher.getInstance("RSA/NONE/NoPadding", "SC");
c.init(Cipher.DECRYPT_MODE, pubKey);
byte[] result = c.doFinal(data_to_decrypt.getBytes());
そして結果として(バイトを文字列に変換した後)私は得る022c06571c6a263b389fcd93159cb311abb880bddf51b7c916dd1ae...
php 関数が返す場所で
sd8dsa348acvcx87|00454|OK|15000|CDE
、これは正しい出力です。