Учебники

Криптография Java — KeyGenerator

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);      
   }
}

Выход

Вышеуказанная программа генерирует следующий вывод —