Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы быть в состоянии создать цифровую подпись, Вы нуждаетесь в закрытом ключе. (Его соответствующий открытый ключ будет необходим, чтобы проверить подлинность подписи.)
В некоторых случаях пара ключей (и соответствующий открытый ключ с закрытым ключом) уже доступна в файлах. В этом случае программа может импортировать и использовать закрытый ключ для того, чтобы подписаться, как показано в Слабых местах и Альтернативах.
В других случаях программа должна генерировать пару ключей. Пара ключей сгенерирована при использовании 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();