Java предоставляет класс KeyGenerator, этот класс используется для генерации секретных ключей, а объекты этого класса можно использовать повторно.
Для генерации ключей с использованием класса KeyGenerator выполните следующие шаги.
Шаг 1. Создайте объект KeyGenerator
Класс KeyGenerator предоставляет метод getInstance (), который принимает переменную String, представляющую требуемый алгоритм генерации ключей, и возвращает объект KeyGenerator, который генерирует секретные ключи.
Создайте объект KeyGenerator, используя метод getInstance (), как показано ниже.
//Creating a KeyGenerator object KeyGenerator keyGen = KeyGenerator.getInstance("DES");
Шаг 2: Создайте объект SecureRandom
Класс SecureRandom пакета java.Security предоставляет мощный генератор случайных чисел, который используется для генерации случайных чисел в Java. Создайте этот класс, как показано ниже.
//Creating a SecureRandom object SecureRandom secRandom = new SecureRandom();
Шаг 3: Инициализируйте KeyGenerator
Класс KeyGenerator предоставляет метод с именем init (), этот метод принимает объект SecureRandom и инициализирует текущий KeyGenerator .
Инициализируйте объект KeyGenerator, созданный на предыдущем шаге, с помощью метода init () .
//Initializing the KeyGenerator keyGen.init(secRandom);
пример
В следующем примере демонстрируется генерация секретного ключа с использованием класса KeyGenerator пакета javax.crypto .
import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java.security.Key; import java.security.SecureRandom; public class KeyGeneratorExample { public static void main(String args[]) throws Exception{ //Creating a KeyGenerator object KeyGenerator keyGen = KeyGenerator.getInstance("DES"); //Creating a SecureRandom object SecureRandom secRandom = new SecureRandom(); //Initializing the KeyGenerator keyGen.init(secRandom); //Creating/Generating a key Key key = keyGen.generateKey(); System.out.println(key); Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(cipher.ENCRYPT_MODE, key); String msg = new String("Hi how are you"); byte[] bytes = cipher.doFinal(msg.getBytes()); System.out.println(bytes); } }
Выход
Вышеуказанная программа генерирует следующий вывод —