hmac
— 메시지 인증을 위한 키 해싱¶
소스 코드: Lib/hmac.py
이 모듈은 RFC 2104에서 설명한 대로 HMAC 알고리즘을 구현합니다.
-
hmac.
new
(key, msg=None, digestmod=None)¶ 새로운 hmac 객체를 반환합니다. key는 비밀 키를 제공하는 바이트열이나 바이트 배열(bytearray) 객체입니다. msg가 있으면,
update(msg)
메서드 호출이 수행됩니다. digestmod는 다이제스트 이름, 다이제스트 생성자 또는 HMAC 객체가 사용할 모듈입니다.hashlib.new()
에 적합한 모든 이름을 지원하며 기본값은hashlib.md5
생성자입니다.버전 3.4에서 변경: 매개 변수 key는 바이트열 또는 바이트 배열 객체일 수 있습니다. 매개 변수 msg는
hashlib
가 지원하는 모든 형이 될 수 있습니다. 매개 변수 digestmod는 해시 알고리즘의 이름이 될 수 있습니다.Deprecated since version 3.4, will be removed in version 3.8: digestmod에 대한 묵시적 기본 다이제스트로서의 MD5는 폐지되었습니다.
-
hmac.
digest
(key, msg, digest)¶ 주어진 비밀 key 와 digest로 msg의 다이제스트를 반환합니다. 이 함수는
HMAC(key, msg, digest).digest()
와 동등하지만, 최적화된 C 나 인라인 구현을 사용해서, 메모리에 맞는 메시지에는 더 빠릅니다. 매개 변수 key, msg 및 digest는new()
에서와 같은 뜻입니다.CPython 구현 세부 사항, 최적화된 C 구현은 digest가 문자열이고 OpenSSL에서 지원하는 다이제스트 알고리즘의 이름일 때만 사용됩니다.
버전 3.7에 추가.
HMAC 객체에는 다음과 같은 메서드가 있습니다:
-
HMAC.
update
(msg)¶ hmac 객체를 msg로 갱신합니다. 반복되는 호출은 모든 인자를 이어붙인 단일 호출과 동등합니다:
m.update(a); m.update(b)
는m.update(a + b)
와 동등합니다.버전 3.4에서 변경: 매개 변수 msg는
hashlib
가 지원하는 모든 형이 될 수 있습니다.
-
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) 동작을 피함으로써 타이밍 분석을 방지하도록 설계된 접근법을 사용해서 암호화에 적합하게 만듭니다. a와 b는 모두 같은 형이어야 합니다:str
(ASCII만, 예를 들어HMAC.hexdigest()
에 의해 반환된 것과 같은 것) 이나 바이트열류 객체.참고
a와 b의 길이가 다르거나 에러가 발생하면, 타이밍 공격이 이론적으로는 a 와 b의 형과 길이에 관한 정보를 드러낼 수 있습니다 - 하지만 그 값은 아닙니다.
버전 3.3에 추가.
더 보기
- 모듈
hashlib
안전한 해시 함수를 제공하는 파이썬 모듈.