Какая разница использования клавиш BC или по умолчанию?

StackOverflow https://stackoverflow.com/questions/2950212

  •  05-10-2019
  •  | 
  •  

Вопрос

Обе линии кода:

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

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

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

Это было полезно?

Решение

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

Я лично не нашел ничего, написанного о провайдерах Солнца и До н.э., несовместимых, и я предлагаю использовать нативную реализацию Java RSA, если зависимость Bouncycastle может быть полностью упала на это. Вы должны добавить внешние зависимости только в том случае, если от этого есть четко определенная выгода.

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

РЕДАКТИРОВАТЬ

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

Другие советы

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top