Cryptographie Java - KeyGenerator

Java fournit KeyGenerator class cette classe est utilisée pour générer des clés secrètes et les objets de cette classe sont réutilisables.

Pour générer des clés à l'aide de la classe KeyGenerator, suivez les étapes ci-dessous.

Étape 1: créer un objet KeyGenerator

le KeyGenerator classe fournit getInstance() qui accepte une variable String représentant l'algorithme de génération de clé requis et renvoie un objet KeyGenerator qui génère des clés secrètes.

Créer KeyGenerator objet utilisant le getInstance() méthode comme indiqué ci-dessous.

//Creating a KeyGenerator object
KeyGenerator keyGen = KeyGenerator.getInstance("DES");

Étape 2: créer un objet SecureRandom

le SecureRandom classe de la java.SecurityLe package fournit un puissant générateur de nombres aléatoires qui est utilisé pour générer des nombres aléatoires en Java. Instanciez cette classe comme indiqué ci-dessous.

//Creating a SecureRandom object
SecureRandom secRandom = new SecureRandom();

Étape 3: initialiser le KeyGenerator

le KeyGenerator classe fournit une méthode nommée init() cette méthode accepte l'objet SecureRandom et initialise le courant KeyGenerator.

Initialisez l'objet KeyGenerator créé à l'étape précédente à l'aide du init() méthode.

//Initializing the KeyGenerator
keyGen.init(secRandom);

Exemple

L'exemple suivant montre la génération de clé de la clé secrète à l'aide de la classe KeyGenerator du javax.crypto paquet.

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

Production

Le programme ci-dessus génère la sortie suivante -

com.sun.crypto.provider.DESKey@18629
[B@2ac1fdc4