Spec-Zone .ru
спецификации, руководства, описания, API
След: Средства защиты в Java SE
Урок: Генерирование и Проверка Подписей
Раздел: Генерирование Цифровой подписи
Генерируйте Открытые и Закрытые ключи
Домашняя страница > Средства защиты в Java SE > Генерирование и Проверка Подписей

Генерируйте Открытые и Закрытые ключи

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

В некоторых случаях пара ключей (и соответствующий открытый ключ с закрытым ключом) уже доступна в файлах. В этом случае программа может импортировать и использовать закрытый ключ для того, чтобы подписаться, как показано в Слабых местах и Альтернативах.

В других случаях программа должна генерировать пару ключей. Пара ключей сгенерирована при использовании KeyPairGenerator class.

В этом примере Вы генерируете пару "открытый/закрытый ключ" для Алгоритма цифровой подписи (DSA). Вы генерируете ключи с 1024-разрядной длиной.

Генерирование пары ключей требует нескольких шагов:

Создайте Генератор Пары ключей

Первый шаг должен получить объект генератора пары ключей для того, чтобы он генерировал ключи для алгоритма подписи DSA.

Как со всеми классами механизма, способ получить a KeyPairGenerator объект для определенного типа алгоритма состоит в том, чтобы вызвать getInstance статический метод фабрики на KeyPairGenerator class. У этого метода есть две формы, обе из который hava a String algorithm первый параметр; у одной формы также есть a String provider второй параметр.

Вызывающая сторона может таким образом дополнительно определить имя провайдера, который гарантирует, что реализация алгоритма, который требуют, от именованного провайдера. Пример кода этого урока всегда определяет значение по умолчанию провайдер SUN, встроенный в JDK.

Поместите следующий оператор после

else try {

строка в файле, создаваемом в предыдущем шаге, Подготовьте Начальную Структуру Программы:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN");

Инициализируйте Генератор Пары ключей

Следующий шаг должен инициализировать генератор пары ключей. Все генераторы пары ключей совместно используют понятие размера ключа и источник случайности. KeyPairGenerator class имеет initialize метод, который берет эти два типа параметров.

Размер ключа для ключевого генератора DSA является длиной ключа (в битах), который Вы установите в 1024.

Источник случайности должен быть экземпляром SecureRandom class. Этот пример запрашивает тот, который использует алгоритм псевдогенерации случайных чисел SHA1PRNG, в соответствии со встроенным провайдером SUN. Пример тогда передает это SecureRandom экземпляр к методу инициализации генератора пары ключей.

SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.initialize(1024, random);

Отметьте: SecureRandom реализация пытается полностью рандомизировать внутреннее состояние генератора непосредственно, если вызывающая сторона не следует за звонком getInstance метод со звонком setSeed метод. Так, если у Вас было определенное значение семени, что Вы хотели используемый, Вы вызовете следующее до initialize вызовите:

random.setSeed(seed);

Генерируйте Пару Ключей, заключительный шаг должен генерировать пару ключей и сохранить ключи PrivateKey и PublicKey объекты.

KeyPair pair = keyGen.generateKeyPair();
PrivateKey priv = pair.getPrivate();
PublicKey pub = pair.getPublic();

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Подготовьте Начальную Структуру Программы
Следующая страница: Подпишите Данные