파이썬에서 암호화 해시 함수를 사용한 메시지 인증은 HMAC 메커니즘을 통해 달성할 수 있습니다. 비밀 공유 키와 함께 MD5, SHA-1과 같은 여러 반복 가능한 해시 기능과 함께 HMAC를 사용할 수 있습니다.
기본 아이디어는 공유 비밀 키와 결합된 실제 데이터의 암호화 해시를 생성하여 데이터를 보호하는 것입니다. 최종 결과는 비밀 키 없이 보내지지만 결과 해시는 전송되거나 저장된 메시지를 확인하는 데 사용할 수 있습니다.
구문
hmac.new(key, msg = None, digestmod = None)
새로운 hmac 객체 생성을 반환합니다.
어디 -
-
키 – 여기에 공유 비밀 키가 있습니다.
-
Msg – 여기에서 해시할 메시지 여기에서 해시할 메시지
-
Digestmod – 사용할 HMAC 개체의 다이제스트 이름 또는 모듈
HMAC 모듈의 메소드 및 속성 -
-
hmac.update(메시지)
주어진 메시지를 사용하여 hmac 객체를 업데이트하는 데 사용됩니다. 이 메서드를 두 번 이상 호출하면 메시지가 추가됩니다.
-
hmac.digest()
지금까지 update() 메서드에 전달된 바이트의 다이제스트를 반환합니다.
-
hashlib.hexdigest()
다이제스트가 16진수만 포함하는 길이의 두 배인 문자열로 반환된다는 점을 제외하면 다이제스트()와 유사합니다. 이것은 이메일이나 다른 논바이너리 환경에서 값을 안전하게 교환하는데 사용될 수 있습니다.
-
haslib.copy()
hmac 객체의 복사본("복제")을 반환합니다.
예시 1
기본 MD5 해시 알고리즘을 사용하여 해시를 생성합니다.
#Import libraries import hashlib import hmac #data update_bytes = b'Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ Suspendisse tristique condimentum viverra. Nulla accumsan \ orci risus, non congue lacus feugiat id.' #secret key password = b'402xy5#' #Generate cryptographic hash using md5 my_hmac = hmac.new(update_bytes, password, hashlib.md5) print("The first digest: " + str(my_hmac.digest())) print("The Canonical Name: " + my_hmac.name) print("Block size: " + str (my_hmac.block_size) + "bytes") print("Digest size: " + str(my_hmac.digest_size) + "bytes") #Create a copy of the hmac object my_hmac_cpy = my_hmac.copy() print("The Copied digest: " + str(my_hmac_cpy.digest()))
출력
The first digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8' The Canonical Name: hmac-md5 Block size: 64bytes Digest size: 16bytes The Copied digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8'
SHA1은 MD5 알고리즘보다 더 안전한 것으로 간주되고 SHA1 알고리즘을 사용하여 위의 프로그램을 실행하려고 생각하고 있다면. 이 줄에서 알고리즘 이름을 수정하면 됩니다.
my_hmac =hmac.new(update_bytes, 비밀번호,hashlib.sha1)
결과는 다음과 같습니다.
첫 번째 다이제스트:b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
The Canonical Name: hmac-sha1 Block size: 64bytes Digest size: 20bytes The Copied digest: b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
응용 프로그램
HMAC 인증 메커니즘은 공용 네트워크 서비스와 같이 보안이 중요한 모든 곳에서 사용할 수 있습니다. 예를 들어, 공용 네트워크에서 파이프나 소켓을 통해 중요한 파일/데이터를 전송하는 경우 해당 파일/데이터에 서명을 한 다음 데이터를 사용하기 전에 서명을 테스트해야 합니다.