私はBouncyCastleのRSA(Lightweight API)の実装をいじって、基本を理解しました。JCEプロバイダー実装の仕様を見ると、RSAでさまざまなパディングスキームを使用できることに気付きました。私の理解では、デフォルトではnullパディングが使用されます。そこで、特にOAEPパディングの調査を開始しましOAEPWithSHA512AndMGF1Padding
た。グーグルで検索することはあまり役に立たなかったので、私はBCのソースコードを掘り下げ始め、org.bouncycastle.jce.provider.JCERSACipher
クラスを見つけました。しかし、すぐに見ると頭痛の種になりました...具体的には、コンストラクターinitFromSpec
に渡すことができる最後の2つのパラメーターが何であるかがわかりません。OAEPEncoding
BCのAPIによるとOAEPEncoding
、4つのパラメーターを許可するコンストラクターDigest mgf1Hash
はbyte[] encodingParams
最後の2つの引数として。マスク生成アルゴリズムのインスタンスを取得する方法がわからず、と呼ばれるバイト配列の背後にある目的も理解できないため、これは私を困惑させましたencodingParams
。以下のコードのarg3
との値はどうあるべきですか?arg4
RSABlindedEngine rsa = new RSABlindedEngine();
SHA512Diges sha512 = new SHA512Digest();
Digest arg3 = ???;
byte[] arg4 = ???;
AsymmetricBlockCipher cipher = new OAEPEncoding(rsa, sha512, arg3, arg4);