Kriptografi Java - Generator Kunci

Java menyediakan KeyGenerator kelas kelas ini digunakan untuk menghasilkan kunci rahasia dan objek kelas ini dapat digunakan kembali.

Untuk menghasilkan kunci menggunakan kelas KeyGenerator ikuti langkah-langkah yang diberikan di bawah ini.

Langkah 1: Buat objek KeyGenerator

Itu KeyGenerator kelas menyediakan getInstance() metode yang menerima variabel String yang mewakili algoritme penghasil kunci yang diperlukan dan mengembalikan objek KeyGenerator yang menghasilkan kunci rahasia.

Membuat KeyGenerator objek menggunakan getInstance() metode seperti yang ditunjukkan di bawah ini.

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

Langkah 2: Buat objek SecureRandom

Itu SecureRandom kelas dari java.Securitypaket menyediakan generator nomor acak yang kuat yang digunakan untuk menghasilkan nomor acak di Jawa. Instantiate kelas ini seperti yang ditunjukkan di bawah ini.

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

Langkah 3: Inisialisasi KeyGenerator

Itu KeyGenerator kelas menyediakan metode bernama init() metode ini menerima objek SecureRandom dan menginisialisasi arus KeyGenerator.

Inisialisasi objek KeyGenerator yang dibuat pada langkah sebelumnya menggunakan init() metode.

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

Contoh

Contoh berikut menunjukkan pembuatan kunci dari kunci rahasia menggunakan kelas KeyGenerator dari javax.crypto paket.

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

Keluaran

Program di atas menghasilkan keluaran berikut -

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