Удивительно, но в Интернете очень мало информации об использовании облегченного 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 или больше), если не указано иное... Я также хотел бы получить ссылки на источники, которые дают хороший пример использования Bouncy Castle Lightweight API (я не нахожусь в все заинтересованные в реализации JCA или любые примеры, относящиеся к нему).