Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 메시지 인증을 위한 키 해싱

<시간/>

파이썬에서 암호화 해시 함수를 사용한 메시지 인증은 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 인증 메커니즘은 공용 네트워크 서비스와 같이 보안이 중요한 모든 곳에서 사용할 수 있습니다. 예를 들어, 공용 네트워크에서 파이프나 소켓을 통해 중요한 파일/데이터를 전송하는 경우 해당 파일/데이터에 서명을 한 다음 데이터를 사용하기 전에 서명을 테스트해야 합니다.