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

파이썬 SHA 해시 완벽 가이드: hashlib 모듈로 보안 해시 알고리즘 활용하기

파이썬 hashlib 모듈이란?

이 튜토리얼에서는 다양한 SHA(Secure Hash Algorithms, 보안 해시 알고리즘)를 사용할 수 있게 해주는 파이썬의 hashlib 모듈에 대해 알아보겠습니다. SHA는 암호학적 해시 함수들의 집합으로, 데이터 무결성 검증, 비밀번호 저장, 디지털 서명 등 다양한 보안 관련 작업에 널리 활용됩니다.

hashlib 모듈 설치하기

먼저 다음 명령어를 입력하여 모듈을 설치합니다.

pip install hashlib

사용 가능한 해시 알고리즘 확인하기

hashlib 모듈에서 지원하는 알고리즘 목록은 algorithms_guaranteed 집합을 통해 확인할 수 있습니다. 아래 코드를 실행해 어떤 알고리즘들이 있는지 살펴보겠습니다.

예제 코드

# hashlib 모듈 임포트
import hashlib
# 사용 가능한 알고리즘 출력
print(hashlib.algorithms_guaranteed)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

{'sha256', 'sha512', 'sha224', 'shake_256', 'blake2s', 'shake_128', 'sha384', 'sha3_384', 'sha3_512', 'sha3_224', 'md5', 'sha3_256', 'sha1', 'blake2b'}

출력 결과를 보면 sha1, sha224, sha256, sha384, sha512는 물론, 최신 표준인 SHA-3 계열과 blake2b, blake2s까지 다양한 알고리즘이 기본적으로 지원되는 것을 확인할 수 있습니다.

SHA256으로 문자열 해싱하기

이제 실제로 sha256 알고리즘을 사용하는 방법을 예제를 통해 살펴보겠습니다.

예제 코드

# hashlib 모듈 임포트
import hashlib
# 해싱할 문자열 초기화
# 이 문자열은 'sha256' 알고리즘으로 해싱됩니다.
name = 'Tutorialspoint'
# encode() 메서드로 문자열을 바이트로 변환
# 해시 함수는 인코딩된 문자열만 입력으로 받습니다.
encoded_name = name.encode()
# 인코딩된 값을 sha256 함수에 전달
hashed_name = hashlib.sha256(encoded_name)
# 해시 객체는 사람이 읽기 어려운 형태입니다.
# hexdigest() 메서드로 16진수 형태로 변환하여 출력합니다.
print("객체:", hashed_name)
print("16진수 형식:", hashed_name.hexdigest())

실행 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

객체: <sha256 HASH object @ 0x000002A416E1BAE0>
16진수 형식: 447c2329228a452aa77102dc7d4eca0ee4c6d52a17e9c17408f8917e51e3

코드 동작 원리

  • encode(): 해시 함수는 바이트 데이터만 처리할 수 있으므로, 문자열을 먼저 UTF-8 바이트로 변환해야 합니다.
  • hashlib.sha256(): 인코딩된 데이터를 전달하면 해시 객체가 생성됩니다.
  • hexdigest(): 해시 객체를 사람이 읽을 수 있는 16진수 문자열 형태로 변환해 줍니다.

마무리

sha512, sha3_256, blake2b 등 나머지 알고리즘도 sha256과 동일한 방식으로 사용할 수 있습니다. 각 알고리즘은 해시 값의 길이와 보안 강도가 다르므로, 용도에 맞게 적절히 선택하여 사용하시기 바랍니다.