KeyGenerator — 비밀(대칭) 키 생성기

KeyGenerator — 비밀(대칭) 키 생성기

KeyGenerator 클래스는 비밀(대칭) 키 생성기의 기능을 제공해요. 키 생성기는 이 클래스의 getInstance 정적 메서드 중 하나로 만들어져요.

출처: Java API Reference

본문

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)을 반드시 지원해야 해요.

더 알아보기 (Learn more)