KeyPairGenerator

KeyPairGenerator (키 쌍 생성기)

공개 키와 개인 키의 쌍을 생성하는 데 사용하는 클래스입니다. getInstance 팩토리 메서드로 생성하며, 특정 알고리즘용 키 쌍을 만듭니다.

출처: Java API Reference

본문

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이 발생할 수 있습니다.

더 알아보기 (Learn more)

Java 공식 API