Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Программист, не вникая в математические формулы и особенности их реализации, может использовать уже доступные готовые алгоритмы и методы криптографии. Они предоставляются определенными организациями, так называемыми провайдерами (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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!