KeyAgreement — 키 합의(교환) 프로토콜
KeyAgreement — 키 합의(교환) 프로토콜
KeyAgreement 클래스는 키 합의(또는 키 교환) 프로토콜의 기능을 제공해요. 두 이상의 당사자가 공유 비밀 키를 확립하는 데 사용돼요.
본문
공유 비밀을 확립하는 데 관련된 키는 키 생성기(KeyPairGenerator나 KeyGenerator), KeyFactory, 또는 키 합의 프로토콜의 중간 단계의 결과로 만들어져요.
키 교환의 각 상대방에 대해 doPhase를 호출해야 해요. 예를 들어 다른 한 당사자와 교환한다면 doPhase를 lastPhase 플래그를 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으로 최종 공유 비밀을 얻는 방식으로 동작해요.