KeyAgreement — 키 합의(교환) 프로토콜

KeyAgreement — 키 합의(교환) 프로토콜

KeyAgreement 클래스는 키 합의(또는 키 교환) 프로토콜의 기능을 제공해요. 두 이상의 당사자가 공유 비밀 키를 확립하는 데 사용돼요.

출처: Java API Reference

본문

공유 비밀을 확립하는 데 관련된 키는 키 생성기(KeyPairGeneratorKeyGenerator), KeyFactory, 또는 키 합의 프로토콜의 중간 단계의 결과로 만들어져요.

키 교환의 각 상대방에 대해 doPhase를 호출해야 해요. 예를 들어 다른 한 당사자와 교환한다면 doPhaselastPhase 플래그를 true로 설정해 한 번 호출하고, 두 당사자와 교환한다면 처음에는 false, 두 번째에는 true로 두 번 호출해요.

Java 플랫폼의 모든 구현은 다음 표준 KeyAgreement 알고리즘을 지원해야 해요: DiffieHellman. 추가 알고리즘 지원 여부는 릴리스 문서를 확인해요.

주요 메서드를 정리하면 다음과 같아요.

  • KeyAgreement getInstance(String algorithm) — 지정된 알고리즘의 객체를 반환해요.
  • void init(Key key) — 공유 비밀을 확립하는 데 참여하는 당사자 중 하나와 함께 이 키 합의를 초기화해요. InvalidKeyException, InvalidAlgorithmParameterException이 발생할 수 있어요.
  • Key doPhase(Key key, boolean lastPhase) — 주어진 키로 이 키 합의의 다음 단계를 실행해요. InvalidKeyException, IllegalStateException이 발생할 수 있어요.
  • byte[] generateSecret() — 공유 비밀을 생성해 새 버퍼에 반환해요. IllegalStateException, ShortBufferException이 발생할 수 있어요.

키 교환의 각 단계를 doPhase로 차례로 실행한 뒤 generateSecret으로 최종 공유 비밀을 얻는 방식으로 동작해요.

더 알아보기 (Learn more)