Java Şifreleme - KeyGenerator

Java sağlar KeyGenerator sınıf, bu sınıf gizli anahtarlar oluşturmak için kullanılır ve bu sınıfın nesneleri yeniden kullanılabilir.

KeyGenerator sınıfını kullanarak anahtarlar oluşturmak için aşağıda verilen adımları izleyin.

Adım 1: Bir KeyGenerator nesnesi oluşturun

KeyGenerator sınıf sağlar getInstance() gerekli anahtar oluşturma algoritmasını temsil eden bir String değişkenini kabul eden ve gizli anahtarlar oluşturan bir KeyGenerator nesnesi döndüren yöntem.

Oluşturmak KeyGenerator kullanarak nesne getInstance() yöntemi aşağıda gösterildiği gibi.

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

Adım 2: SecureRandom nesnesi oluşturun

SecureRandom sınıfı java.Securitypaketi, Java'da rasgele sayılar üretmek için kullanılan güçlü bir rasgele sayı üreteci sağlar. Bu sınıfı aşağıda gösterildiği gibi örnekleyin.

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

3. Adım: KeyGenerator'ü başlatın

KeyGenerator sınıf adlı bir yöntem sağlar init() bu yöntem SecureRandom nesnesini kabul eder ve mevcut KeyGenerator.

Önceki adımda oluşturulan KeyGenerator nesnesini init() yöntem.

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

Misal

Aşağıdaki örnek, anahtarın KeyGenerator sınıfını kullanarak gizli anahtarın anahtar üretimini gösterir. javax.crypto paketi.

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

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -

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