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