KeyGenerator — 비밀(대칭) 키 생성기
KeyGenerator — 비밀(대칭) 키 생성기
KeyGenerator 클래스는 비밀(대칭) 키 생성기의 기능을 제공해요. 키 생성기는 이 클래스의 getInstance 정적 메서드 중 하나로 만들어져요.
본문
KeyGenerator 객체는 재사용할 수 있어요. 키가 생성된 후 같은 KeyGenerator 객체를 재사용해 더 많은 키를 생성할 수 있어요.
키를 생성하는 방법은 알고리즘 독립적 방식과 알고리즘 특정 방식 두 가지가 있어요. 두 방식의 차이는 객체의 초기화 방법뿐이에요.
알고리즘 독립적 초기화에서 모든 키 생성기는 키 크기(keysize)와 난수 소스(Source of randomness)라는 두 가지 개념을 공유해요. init 메서드는 키 크기 인자만 받거나, SecureRandom 인자만 받거나, 둘 다 받을 수 있어요.
알고리즘 특정 초기화에서는 이미 존재하는 알고리즘 특정 매개변수 집합이 있을 때 AlgorithmParameterSpec 인자를 받는 init 메서드가 사용돼요.
주요 메서드를 정리하면 다음과 같아요.
KeyGenerator getInstance(String algorithm)— 지정된 알고리즘의 키 생성기를 반환해요.NoSuchAlgorithmException,NoSuchProviderException이 발생할 수 있어요.void init(int keysize)— 키 크기로 키 생성기를 초기화해요.InvalidParameterException이 발생할 수 있어요.void init(int keysize, SecureRandom random)— 키 크기와 난수 소스로 초기화해요.void init(SecureRandom random)— 난수 소스로 초기화해요.SecretKey generateKey()— 비밀 키를 생성해요.IllegalStateException이 발생할 수 있어요.String getAlgorithm()— 알고리즘 이름을 반환해요.Provider getProvider()— 제공자를 반환해요.
Java 플랫폼은 표준 KeyGenerator 알고리즘(예: AES)을 반드시 지원해야 해요.