Java Cryptography - KeyGenerator

Java cung cấp KeyGenerator lớp này được sử dụng để tạo ra các khóa bí mật và các đối tượng của lớp này có thể được sử dụng lại.

Để tạo khóa bằng cách sử dụng lớp KeyGenerator, hãy làm theo các bước dưới đây.

Bước 1: Tạo đối tượng KeyGenerator

Các KeyGenerator lớp học cung cấp getInstance() phương thức chấp nhận một biến Chuỗi đại diện cho thuật toán tạo khóa bắt buộc và trả về đối tượng KeyGenerator tạo khóa bí mật.

Tạo nên KeyGenerator đối tượng sử dụng getInstance() như hình dưới đây.

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

Bước 2: Tạo đối tượng SecureRandom

Các SecureRandom lớp của java.Securitygói cung cấp một trình tạo số ngẫu nhiên mạnh được sử dụng để tạo các số ngẫu nhiên trong Java. Khởi tạo lớp này như hình dưới đây.

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

Bước 3: Khởi tạo KeyGenerator

Các KeyGenerator lớp cung cấp một phương thức có tên init() phương thức này chấp nhận đối tượng SecureRandom và khởi tạo hiện tại KeyGenerator.

Khởi tạo đối tượng KeyGenerator được tạo ở bước trước bằng cách sử dụng init() phương pháp.

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

Thí dụ

Ví dụ sau minh họa cách tạo khóa của khóa bí mật bằng cách sử dụng lớp KeyGenerator của javax.crypto gói hàng.

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

Đầu ra

Chương trình trên tạo ra kết quả sau:

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