Bouncy Castle を使用して RSA 暗号化/復号化を実行しようとしています。すべてがうまく機能していますが、復号化関数で破損した出力が得られます。これは、アルゴリズムを呼び出すときに適切なパディングがないためだと思います。
クラスパスに (bcprov-jdk15on-147.jar) を追加し、次のようにコンストラクターにインストールすることで、Bouncy Castle をインストールしました。
Security.addProvider( new BouncyCastleProvider() );
プロバイダーがインストールされていることを確認するために、次のように呼び出しました。
if (Security.getProvider( "BC" ) != null)
{
System.out.println( "Bouncy Castle provider is available" );
}
これは期待どおりに機能します。
暗号を取得するときに、アルゴリズム「RSA」を使用しようとすると、暗号文と破損した平文が取得されます。PKCS などのパディング付きのアルゴリズムを使用する必要があることは理解していますが、次のように暗号を取得しようとすると、NoSuchAlgorithm 例外が発生して失敗します。
Cipher rsaCipher = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
私が試した他の方法に関係なく、暗号を取得できる唯一の方法は、次のように呼び出すことです。
Cipher rsaCipher = Cipher.getInstance("RSA", "BC");
PKCS 暗号が利用できないのはなぜですか? 無制限の管轄ポリシーをインストールしました。前述のとおり、プレーンな「RSA」は機能しますが、パディング コールは機能しません。さらに、プロバイダー内の Bouncy Castle キーを一覧表示しようとしましたが、かなり網羅的な一覧のように見えます。
これが欠落している理由を整理するのを手伝ってくれる人はいますか?
ありがとう!エヴァン