Mac — 메시지 인증 코드

Mac — 메시지 인증 코드

Mac 클래스는 메시지 인증 코드(MAC) 알고리즘의 기능을 제공해요. MAC은 비밀 키를 기반으로 불안정한 매체를 통해 전송되거나 저장된 정보의 무결성을 확인하는 방법을 제공해요.

출처: Java API Reference

본문

일반적으로 메시지 인증 코드는 비밀 키를 공유하는 두 당사자 사이에서 이들 사이에 전송되는 정보를 검증하는 데 사용돼요.

암호 해시 함수에 기반한 MAC 메커니즘은 HMAC이라고 불러요. HMAC은 SHA256이나 SHA384 같은 암호 해시 함수와 비밀 공유 키를 결합해 사용할 수 있고, RFC 2104에 정의돼 있어요.

Java 플랫폼의 모든 구현은 HmacSHA1HmacSHA256 표준 Mac 알고리즘을 지원해야 해요. 추가 알고리즘 지원 여부는 릴리스 문서에서 확인할 수 있어요.

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

  • Mac getInstance(String algorithm) — 지정된 알고리즘의 MAC 객체를 반환해요.
  • void init(Key key) — 비밀 키로 MAC을 초기화해요. InvalidKeyException, InvalidAlgorithmParameterException이 발생할 수 있어요.
  • void update(byte input) — 주어진 바이트를 처리해요. IllegalStateException이 발생할 수 있어요.
  • byte[] doFinal() — MAC 연산을 마치고 그 결과를 반환해요. IllegalStateException, ShortBufferException이 발생할 수 있어요.
  • byte[] doFinal(byte[] input) — 주어진 입력을 처리하고 MAC 연산을 마쳐요.
  • int getMacLength() — MAC의 길이(바이트)를 반환해요.
  • void reset() — 이 MAC을 재설정해요.
  • Object clone() — 구현이 복제 가능하면 복제본을 반환해요. CloneNotSupportedException이 발생할 수 있어요.

HMAC 기반 무결성 검증이 필요한 곳에서 널리 사용돼요.

더 알아보기 (Learn more)