hmac — 메시지 인증을 위한 키 해싱

소스 코드: Lib/hmac.py


이 모듈은 RFC 2104에서 설명한 대로 HMAC 알고리즘을 구현합니다.

hmac.new(key, msg=None, digestmod='')

Return a new hmac object. key is a bytes or bytearray object giving the secret key. If msg is present, the method call update(msg) is made. digestmod is the digest name, digest constructor or module for the HMAC object to use. It may be any name suitable to hashlib.new(). Despite its argument position, it is required.

버전 3.4에서 변경: 매개 변수 key는 바이트열 또는 바이트 배열 객체일 수 있습니다. 매개 변수 msghashlib가 지원하는 모든 형이 될 수 있습니다. 매개 변수 digestmod는 해시 알고리즘의 이름이 될 수 있습니다.

Deprecated since version 3.4, will be removed in version 3.8: MD5 as implicit default digest for digestmod is deprecated. The digestmod parameter is now required. Pass it as a keyword argument to avoid awkwardness when you do not have an initial msg.

hmac.digest(key, msg, digest)

주어진 비밀 keydigestmsg의 다이제스트를 반환합니다. 이 함수는 HMAC(key, msg, digest).digest()와 동등하지만, 최적화된 C 나 인라인 구현을 사용해서, 메모리에 맞는 메시지에는 더 빠릅니다. 매개 변수 key, msgdigestnew()에서와 같은 뜻입니다.

CPython 구현 세부 사항, 최적화된 C 구현은 digest가 문자열이고 OpenSSL에서 지원하는 다이제스트 알고리즘의 이름일 때만 사용됩니다.

버전 3.7에 추가.

HMAC 객체에는 다음과 같은 메서드가 있습니다:

HMAC.update(msg)

hmac 객체를 msg로 갱신합니다. 반복되는 호출은 모든 인자를 이어붙인 단일 호출과 동등합니다: m.update(a); m.update(b)m.update(a + b)와 동등합니다.

버전 3.4에서 변경: 매개 변수 msghashlib가 지원하는 모든 형이 될 수 있습니다.

HMAC.digest()

지금까지 update() 메서드로 전달된 바이트들의 다이제스트를 반환합니다. 이 바이트열 객체는 생성자에게 주어진 다이제스트의 digest_size와 길이가 같습니다. NUL 바이트를 포함하여 비 ASCII 바이트를 포함할 수 있습니다.

경고

검증 루틴에서 digest()의 출력을 외부에서 제공되는 다이제스트와 비교할 때, == 연산자 대신 compare_digest() 함수를 사용하여 타이밍 공격의 취약점을 줄이는 것이 좋습니다.

HMAC.hexdigest()

다이제스트가 16진수만 포함하는 길이가 두 배인 문자열로 반환된다는 점을 제외하고는 digest()와 같습니다. 이것은 전자 메일이나 기타 비 바이너리 환경에서 값을 안전하게 교환하는 데 사용될 수 있습니다.

경고

검증 루틴에서 hexdigest()의 출력을 외부에서 제공되는 다이제스트와 비교할 때, == 연산자 대신 compare_digest() 함수를 사용하여 타이밍 공격의 취약점을 줄이는 것이 좋습니다.

HMAC.copy()

hmac 객체의 복사본(《클론》)을 반환합니다. 이것은 공통 초기 부분 문자열을 공유하는 문자열들의 다이제스트를 효율적으로 계산하는 데 사용할 수 있습니다.

hmac 객체에는 다음과 같은 어트리뷰트가 있습니다:

HMAC.digest_size

결과 HMAC 다이제스트의 크기(바이트).

HMAC.block_size

해시 알고리즘의 내부 블록 크기(바이트).

버전 3.4에 추가.

HMAC.name

이 HMAC의 규범적 이름, 항상 소문자, 예를 들어 hmac-md5.

버전 3.4에 추가.

이 모듈은 또한 다음 도우미 함수를 제공합니다:

hmac.compare_digest(a, b)

a == b를 반환합니다. 이 함수는 내용 기반의 단락(short circuiting) 동작을 피함으로써 타이밍 분석을 방지하도록 설계된 접근법을 사용해서 암호화에 적합하게 만듭니다. ab는 모두 같은 형이어야 합니다: str (ASCII만, 예를 들어 HMAC.hexdigest()에 의해 반환된 것과 같은 것) 이나 바이트열류 객체.

참고

ab의 길이가 다르거나 에러가 발생하면, 타이밍 공격이 이론적으로는 ab의 형과 길이에 관한 정보를 드러낼 수 있습니다 - 하지만 그 값은 아닙니다.

버전 3.3에 추가.

더 보기

모듈 hashlib

안전한 해시 함수를 제공하는 파이썬 모듈.