Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 구현하는 HMAC 메시지 인증 키 해시 완벽 가이드


HMAC(Hash-based Message Authentication Code, 해시 기반 메시지 인증 코드)은 암호화 해시 함수를 활용하여 메시지의 무결성과 인증을 검증하는 프레임워크입니다. HMAC은 MD5, SHA-1 등 다양한 해시 알고리즘과 함께 사용할 수 있습니다.

HMAC의 핵심 아이디어는 실제 데이터와 비밀 키(secret key)를 함께 해싱한다는 것입니다. 최종 출력값에는 비밀 키가 포함되지 않은 상태로 전송되기 때문에, 수신 측에서 동일한 비밀 키를 가지고 있을 때만 결과를 검증할 수 있어 안전한 메시지 인증이 가능합니다.

이 모듈을 사용하려면 파이썬 코드에서 먼저 hmac 모듈을 임포트해야 합니다.

import hmac

hmac 모듈의 주요 메서드와 속성

hmac.update(message)

이 메서드는 지정된 메시지로 hmac 객체를 갱신합니다. 이 함수를 여러 번 호출하는 것은 모든 인자를 하나로 연결하여 단 한 번 호출하는 것과 동일하게 동작합니다.

hmac.digest()

update() 메서드를 통해 전달된 데이터의 다이제스트(digest)를 반환합니다. 반환되는 바이트 객체의 크기는 digest_size와 같으며, 0부터 255까지의 전체 범위에 해당하는 바이트 값을 포함할 수 있습니다.

hexdigest()

digest() 메서드와 동일한 역할을 하지만, 결과가 오직 16진수(hexadecimal) 값으로만 구성됩니다. 이러한 특성 덕분에 인터넷을 통해 데이터를 매우 손쉽게 전송할 수 있습니다.

copy()

기존 hmac 객체의 복사본을 생성합니다. 문자열의 다이제스트를 보다 효율적으로 계산하고자 할 때 copy() 메서드가 특히 유용합니다.

예제 코드

import hashlib
import hmac
update_bytes = b'Python123'
password = b'abcde1234'
my_hmac = hmac.new(update_bytes, password, hashlib.md5) # md5 알고리즘을 사용하여 해시 생성
print("The first digest: " + str(my_hmac.digest()))
print("The Canonical Name: " + my_hmac.name)
my_hmac_cpy = my_hmac.copy() # hmac 객체의 복사본 생성
print("The Copied digest: " + str(my_hmac_cpy.digest()))

실행 결과

The first digest: b"\x1c\xe1\xfb\x9b\xd4\x8bu\xb9\xe6N6\xee\x00O'}"
The Canonical Name: hmac-md5
The Copied digest: b"\x1c\xe1\xfb\x9b\xd4\x8bu\xb9\xe6N6\xee\x00O'}"

실행 결과를 보면 원본 hmac 객체와 copy() 메서드로 생성한 복사본이 완전히 동일한 다이제스트 값을 반환하는 것을 확인할 수 있습니다. 또한 name 속성을 통해 현재 사용 중인 해시 알고리즘의 정식 이름인 'hmac-md5'를 확인할 수 있습니다.