2010-06-01 7 views
2

Обе строки кода:В чем отличие использования ключей BC или по умолчанию?

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

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

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

ответ

2

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

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

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

EDIT

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

2

От Javadoc of the first constructor:

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

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

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

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

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

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

+0

> BC в вашем случае "по совпадению" первый предпочтительный провайдер На самом деле нет. Просто проверенный, первый конструктор работает хорошо, даже если поставщик BC не установлен. У Java есть собственный провайдер для RSA под названием «SunRsaSign». – hudolejev

+0

и совместимость с ними? Могу ли я использовать одного и других клиентов? –

+0

@Tom Я думаю, самое лучшее - попробовать это, но я думаю, что проблем не должно быть. Я лично использовал реализацию BC и OpenSSL и не сталкивался с какими-либо проблемами. – hudolejev

0

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

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

+0

и совместимы с провайдерами? Могу ли я использовать одного и других клиентов? –

 Смежные вопросы

  • Нет связанных вопросов^_^