В чем разница использования ключей BC или по умолчанию? - PullRequest
2 голосов
/ 01 июня 2010

Обе строки кода:

KeyPairGenerator.getInstance("RSA")
KeyPairGenerator.getInstance("RSA", "BC")

работает хорошо. Итак, чем отличается использование BC или нет?

Полностью ли совместим BC с используемым по умолчанию RSA? (используя Sun JDK 6)

Ответы [ 3 ]

2 голосов
/ 01 июня 2010

В BouncyCastle FAQ есть некоторые записи, связанные с деталями реализации RSA.

Лично я не нашел ничего написанного о том, что поставщики Sun и BC несовместимы, и я предлагаю использовать нативную реализацию RSA Java, если из-за этого можно полностью исключить зависимость BouncyCastle. Вы должны добавлять внешние зависимости только в том случае, если от этого есть четко определенная выгода.

Если вы используете библиотеку BC где-то еще в своем проекте, я думаю, не имеет значения, какой поставщик использовать.

EDIT

J2ME не включает реализацию RSA. Поэтому, если вы планируете портировать свое приложение на J2ME, библиотека BouncyCastle - правильный путь.

2 голосов
/ 01 июня 2010

Из Javadoc первого конструктора :

Возвращает KeyPairGenerator объект, который генерирует пары открытого и закрытого ключей для указанный алгоритм.

Этот метод пересекает список зарегистрированные провайдеры безопасности, начиная с наиболее предпочтительного Provider. Новый KeyPairGenerator объект, инкапсулирующий Реализация KeyPairGeneratorSpi от первого провайдера, который поддерживает указанный алгоритм возвращается .

Обратите внимание, что список зарегистрированных поставщики могут быть получены через Security.getProviders() метод.

Связанный Javadoc Security.getProviders() в свою очередь утверждает следующее:

Возвращает массив, содержащий все установленные провайдеры. Порядок поставщиков в массиве - это порядок их предпочтений.

Ну, очевидно, BC в вашем случае "по стечению обстоятельств" первый предпочтительный поставщик. Если вокруг него есть неопределенность (то есть вы хотите распространять приложение и не имеете никакого контроля над средой конечного пользователя), и вы хотите, чтобы оно придерживалось использования BC, то вам следует предпочесть использование второго конструктора.

0 голосов
/ 01 июня 2010

«BC» возвращает реализацию криптоалгоритма BouncyCastle.

Если вы не укажете провайдера, он вернет «наиболее предпочтительную» реализацию криптоалгоритма, то есть провидор в позиции 1 является наиболее предпочтительным в массиве провайдеров.

...