KeyPairGenerator
KeyPairGenerator (키 쌍 생성기)
공개 키와 개인 키의 쌍을 생성하는 데 사용하는 클래스입니다. getInstance 팩토리 메서드로 생성하며, 특정 알고리즘용 키 쌍을 만듭니다.
본문
KeyPairGenerator는 특정 알고리즘에 사용할 공개·개인 키 쌍을 만들고, 각 키에 알고리즘 특유의 매개변수를 연관시킵니다. 키 쌍을 생성하는 방식은 객체 초기화 방법에 따라 알고리즘 독립적 방식과 알고리즘 특정 방식으로 나뉩니다.
알고리즘 독립적 초기화는 모든 키 쌍 생성기가 공유하는 키 크기(keysize)와 난수 소스(randomness) 개념을 사용합니다. 키 크기는 알고리즘마다 해석이 다릅니다. 예를 들어 DSA 알고리즘에서는 키 크기가 modulus 길이에 해당합니다. 키 크기만 받는 initialize 메서드는 최우선순위 프로바이더의 SecureRandom 구현을 난수 소스로 사용합니다. DSA이고 키 크기가 512·768·1024·2048이면 Sun 프로바이더는 미리 계산된 p·q·g 매개변수 집합을 사용합니다.
알고리즘 특정 초기화는 이미 존재하는 알고리즘 특유 매개변수 집합(예: DSA의 community parameters)을 사용할 때 AlgorithmParameterSpec 인자를 받는 initialize 메서드로 수행합니다.
클라이언트가 명시적으로 초기화하지 않으면 각 프로바이더가 기본 초기화를 제공합니다. 다만 기본값은 프로바이더마다 다르고 미래 버전에서 바뀔 수 있으므로, 프로바이더별 기본값에 기대기보다는 KeyPairGenerator를 명시적으로 초기화하는 것이 권장됩니다.
모든 Java 플랫폼 구현은 DiffieHellman(1024, 2048, 4096), DSA(1024, 2048), RSA(1024, 2048, 4096) 표준 KeyPairGenerator 알고리즘을 지원해야 합니다.
주요 메서드는 다음과 같습니다.
public static KeyPairGenerator getInstance(String algorithm)— 지정된 알고리즘의 키 쌍을 생성하는KeyPairGenerator객체를 반환합니다.public static KeyPairGenerator getInstance(String algorithm, String provider)— 지정된 프로바이더에서 알고리즘을 지원하는 생성기를 반환합니다.public static KeyPairGenerator getInstance(String algorithm, Provider provider)— 주어진Provider객체를 사용해 생성기를 반환합니다.public void initialize(int keysize)— 기본 매개변수 집합과 최우선 프로바이더의SecureRandom을 사용해 지정된 키 크기로 초기화합니다.public void initialize(int keysize, SecureRandom random)— 지정된 키 크기와 난수 소스로 초기화합니다.public void initialize(AlgorithmParameterSpec params)— 지정된 매개변수 집합으로 초기화합니다.public void initialize(AlgorithmParameterSpec params, SecureRandom random)— 지정된 매개변수 집합과 난수 소스로 초기화합니다.public final KeyPair genKeyPair()— 키 쌍을 생성합니다. 명시적으로 초기화하지 않았다면 프로바이더별 기본값을 사용합니다.public KeyPair generateKeyPair()— 키 쌍을 생성합니다.genKeyPair()와 기능적으로 동일합니다.
지원하지 않는 키 크기를 지정하면 InvalidParameterException이 발생할 수 있습니다.