驚くべきことに、Bouncy Castle の軽量 API の使用に関する Web 上の情報はほとんどありません。しばらく見回した後、基本的な例をまとめることができました。
RSAKeyPairGenerator generator = new RSAKeyPairGenerator();
generator.init(new RSAKeyGenerationParameters
(
new BigInteger("10001", 16),//publicExponent
SecureRandom.getInstance("SHA1PRNG"),//prng
1024,//strength
80//certainty
));
AsymmetricCipherKeyPair keyPair = generator.generateKeyPair();
私は RSA と舞台裏で行われている数学について基本的な理解を持っているので、何が何であるかを理解しpublicExponent
てstrength
います。私が収集したものから、適切なパディングが使用されている限り、それは小さい (3 のように) である可能性がありますpublicExponent
。phi(pq)
ただし、何certainty
を指すのかわかりません(パーセンテージを指す可能性があると述べた場所もありますが、確認したいです)。の使用SecureRandom
は自明です。RSAKeyGenerationParametersのドキュメントはまったく価値がありません (驚くことではありません)。私の唯一の推測は、生成されたキーの精度と関係があるということですが、もう一度確認したいと思います。certainty
だから私の質問は、との適切な値は何publicExponent
ですか?
追伸「状況次第です - 情報をどの程度安全にしたいか」と答えないでください。特に指定がない限り、最高度のセキュリティ (つまり、4096 ビットの RSA キー以上) を想定することはかなり安全です... Bouncy Castle の軽量 API の使用の良い例を示すソースへのリンクも歓迎します (私はJCA 実装またはそれに関連する例に関心のあるすべての人)。