hmac — 메시지 인증을 위한 키 해싱
hmac — 메시지 인증을 위한 키 해싱
hmac 모듈은 RFC 2104에서 설명하는 HMAC 알고리즘을 구현해요. 인터페이스는 고정된 다이제스트 크기를 가진 어떤 해시 함수와도 사용할 수 있어요. 특히 SHAKE-128이나 SHAKE-256 같은 확장 가능 출력 함수는 HMAC에 사용할 수 없어요.
본문
함수
hmac.new(key, msg=None, digestmod) — 새 hmac 객체를 반환해요. key는 비밀 키를 주는 bytes 또는 bytearray 객체예요. msg가 있으면 update(msg) 메서드 호출이 이루어져요. digestmod는 HMAC 객체가 사용할 다이제스트 이름, 다이제스트 생성자 또는 모듈이에요. hashlib.new()에 적합한 어떤 이름이든 될 수 있어요. 인자 위치와 달리 필수예요.
버전 3.4에서 변경: key는 bytes 또는 bytearray 객체가 될 수 있음. 버전 3.8에서 변경: digestmod 인자가 이제 필수이며, 초기 msg가 없을 때 어색함을 피하려면 키워드 인자로 전달해요.
hmac.digest(key, msg, digest) — 주어진 비밀 키와 다이제스트에 대한 msg의 다이제스트를 반환해요. HMAC(key, msg, digest).digest()와 동일하지만, 메모리에 맞는 메시지에 대해 더 빠른 최적화된 C 또는 인라인 구현을 사용해요. key, msg, digest 파라미터는 new()와 같은 의미예요. CPython 구현 세부 사항으로, 최적화된 C 구현은 digest가 OpenSSL이 지원하는 다이제스트 알고리즘 이름의 문자열일 때만 사용돼요. 버전 3.7에서 추가됨.
class hmac.HMAC — 다음 메서드를 가진 HMAC 객체예요.
HMAC.update(msg) — msg로 hmac 객체를 갱신해요. 반복 호출은 모든 인자를 연결한 단일 호출과 동일해요. m.update(a); m.update(b)는 m.update(a + b)와 동일해요.
HMAC.digest() — 지금까지 update() 메서드에 전달된 바이트의 다이제스트를 반환해요. 이 bytes 객체는 생성자에 주어진 다이제스트의 digest_size와 같은 길이예요. NUL 바이트를 포함한 비ASCII 바이트를 포함할 수 있어요. 검증 루틴에서 digest()의 출력을 외부에서 제공된 다이제스트와 비교할 때는 타이밍 공격 취약성을 줄이려면 == 연산자 대신 compare_digest() 함수를 사용하는 것이 좋아요.
HMAC.hexdigest() — digest()와 같지만 다이제스트를 두 배 길이의 16진수 숫자만 포함하는 문자열로 반환해요. 이메일이나 다른 비바이너리 환경에서 값을 안전하게 교환하는 데 사용할 수 있어요.
HMAC.copy() — hmac 객체의 사본(“클론”)을 반환해요. 공통 초기 부분 문자열을 공유하는 문자열의 다이제스트를 효율적으로 계산하는 데 사용할 수 있어요.
HMAC.digest_size — 결과 HMAC 다이제스트의 크기(바이트).
HMAC.block_size — 해시 알고리즘의 내부 블록 크기(바이트). 버전 3.4에서 추가됨.
HMAC.name — 이 HMAC의 표준 이름으로, 항상 소문자예요(예: hmac-md5). 버전 3.4에서 추가됨.
hmac.compare_digest(a, b) — a == b를 반환해요. 이 함수는 콘텐츠 기반 단락 동작을 피해 타이밍 분석을 방지하도록 설계된 접근 방식을 사용하므로 암호화에 적합해요. a와 b는 모두 같은 타입이어야 해요. str(ASCII만, 예: HMAC.hexdigest()가 반환) 또는 bytes 유사 객체여야 해요. a와 b의 길이가 다르거나 오류가 발생하면 타이밍 공격이 이론적으로 양쪽의 타입과 길이에 대한 정보를 드러낼 수 있지만 값은 드러내지 않아요. 버전 3.3에서 추가됨.
참고
- 모듈
hashlib— 보안 해시 함수를 제공하는 파이썬 모듈.