Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Генерация ключей



Программист, не вникая в математические формулы и особенности их реализации, может использовать уже доступные готовые алгоритмы и методы криптографии. Они предоставляются определенными организациями, так называемыми провайдерами (provider). По умолчанию встроенные средства Java поставляет провайдер "SUN". Таким образом, единственное, что необходимо делать, это указывать собственно алгоритм и провайдера.

В первую очередь необходимо сгенерировать пару ключей - public key и private key. Для этого используется класс KeyPairGenerator. Для получения конкретного объекта этого класса необходимо вызвать static factory метод getInstance(). В качестве аргументов передаются строки с указанием алгоритма и провайдера. Например, для использования DSA (Digital Signature Algorithm) и провайдера SUN необходимо писать:

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

В связи с тем, что большинство криптографических алгоритмов являются вероятностными, необходимо создать вероятностный источник — объект класса SecureRandom. При этом существует возможность использовать разные методы, например, SHA1PRNG (pseudo-random-number generation algorithm).

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

Теперь необходимо проинициализировать объект keyGen, передав ему 2 параметра — длину в битах и источник случайности.

keyGen.initialize(1024, random);

Последним этапом является собственно генерация пары ключей (метод generateKeyPair()) и выделение двух отдельных ключей (методы getPrivate() и getPublic()).

KeyPair pair = keyGen.generateKeyPair();

PrivateKey privKey = pair.getPrivate();

PublicKey pubKey = pair.getPublic();

Создание подписи.

В первую очередь необходимо создать объект класса Signature, вызвав метод getInstance():

Signature dsa = Signature.getInstance("SHA1withDSA", "SUN");

В данном случае используется алгоритм DSA с SHA1 (хэш-функция). Затем идет процесс инициализации подписи ключом. На этом этапе используется закрытый ключ, полученный ранее:

dsa.initSign(privKey);

После этого необходимо свести подпись и сами данные. Для этого вызывается метод update(), получаемый в качестве параметра байтовый массив данных, которые должны быть подписаны.

На последнем этапе генерируется сама подпись, которая представляется в виде байтового массива.

byte[] realSig = dsa.sign();





Дата публикования: 2015-11-01; Прочитано: 169 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...