Удивительно, но в Интернете очень мало информации об использовании облегченного API Bouncy Castle. Посмотрев некоторое время, я смог составить простой пример:
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
. Я предполагаю, что publicExponent
относится к простому числу phi(pq)
, и, насколько я понимаю, оно может быть небольшим (например, 3), если используется соответствующее заполнение. Тем не менее, я понятия не имею, что означает certainty
(в некоторых местах упоминалось, что это может относиться к процентам, но я хочу быть уверенным). Использование SecureRandom
говорит само за себя. Документация RSAKeyGenerationParameters совершенно бесполезна (не удивительно). Мое единственное предположение, что это как-то связано с точностью сгенерированных ключей, но я снова хочу быть уверен. Так что мой вопрос в том, каковы соответствующие значения для certainty
и publicExponent
?
P.S.
Пожалуйста, не отвечайте «это зависит от контекста - насколько вы хотите, чтобы информация была». Довольно безопасно предполагать наивысшую степень безопасности (т.е. 4096-битный ключ RSA или выше), если не указано иное ... Я также был бы признателен за ссылки на источники, которые дают хороший пример использования легковесного API Bouncy Castle (я не в все заинтересованы в реализации JCA или любых примерах, относящихся к нему).