키의 종류
- 대칭키 (=비밀키)
- 비대칭키
- 공개키(public key)
- 개인키(private key) (=비밀키)
대칭키 생성 (KeyGenerator 클래스를 사용)
// 키 생성기 인스턴스화 및 AES 알고리즘 지정
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
// 키 길이 설정 (예: 256비트)
keyGenerator.init(256);
// 키 생성
SecretKey secretKey = keyGenerator.generateKey();
256비트의 대칭키 길이면 안전하다.
비대칭키 생성 (KeyGenerator 클래스를 사용)
// 키 쌍 생성기 인스턴스화 및 RSA 알고리즘 지정
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
// 키 길이 설정 (예: 2048비트)
keyPairGenerator.initialize(2048);
// 키 쌍 생성
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
2048비트의 비대칭키 길이면 안전하다.
SecureRandom
- `KeyGenerator`와 `KeyPairGenerator`클래스는 내부적으로 `SecureRandom` 인스턴스를 사용한다.
- 암호학적으로 강력한 난수 생성기로, 예측이 불가능한 값을 생성하는 데 필요한 특성을 가지고 있다.
SecureRandom secureRandom = new SecureRandom();
// 안전한 난수 바이트 배열 생성
byte[] randomBytes = new byte[16];
secureRandom.nextBytes(randomBytes);