💡 도움이 되셨다면 ♡와 팔로우 부탁드립니다. 미리 감사드립니다.

톺아보기는 '샅샅이 더듬어 가면서 살피다'라는 뜻의 순우리말입니다.

hashlib 라이브러리 사용법

💡 hashlib은 Python에서 암호화 해시를 생성하는 데 사용되는 라이브러리로, 보안이 중요한 애플리케이션에서 데이터 무결성 검사나 비밀번호 암호화에 유용하게 쓰인다.

hashlib이란?

  • 다양한 해시 알고리즘을 제공하여, 주어진 데이터를 고정된 길이의 암호화된 문자열(해시)로 변환하는 라이브러리이다.
  • 데이터의 작은 변화에도 해시 값이 크게 달라지며, 같은 데이터는 항상 같은 해시 값을 생성하는 특징이 있다.
  • 대표적인 해시 알고리즘으로는 SHA (Secure Hash Algorithm)MD5 (Message Digest Algorithm)가 있다.
import hashlib

hashlib에서 제공하는 해시 알고리즘

  • SHA-1, SHA-256, SHA-512: 보안성이 높아 널리 사용된다.
  • MD5: 빠르지만 보안성이 낮아 데이터 무결성 검사 용도로 주로 사용된다.

Python에서 해시 생성하기

Python에서는 hashlib을 사용하여 다양한 해시 알고리즘으로 해시 값을 생성할 수 있다.

text = "Hello, World!"
hash_object = hashlib.sha256(text.encode())
hash_hex = hash_object.hexdigest()
print(f"SHA-256 해시 값: {hash_hex}")

주요 함수

  1. hashlib.sha256(): SHA-256 해시 객체를 생성
  2. hashlib.sha1(): SHA-1 해시 객체를 생성
  3. hashlib.md5(): MD5 해시 객체를 생성
  4. hexdigest(): 해시 객체를 16진수 문자열로 반환

예제

# SHA-1 해시 생성하기
hash_object = hashlib.sha1(text.encode())
print(f"SHA-1 해시 값: {hash_object.hexdigest()}")

# MD5 해시 생성하기
hash_object = hashlib.md5(text.encode())
print(f"MD5 해시 값: {hash_object.hexdigest()}")

해시 활용 예시

파일의 무결성 검사

파일이나 데이터의 무결성을 검사할 때 해시 값을 활용할 수 있다. 원본 파일과 현재 파일의 해시 값을 비교하여 파일이 손상되었는지 확인할 수 있다.

# 파일 무결성 검사 함수
def file_checksum(file_path):
    hash_object = hashlib.sha256()
    with open(file_path, "rb") as f:
        while chunk := f.read(4096):
            hash_object.update(chunk)
    return hash_object.hexdigest()

# 파일 검사 예제
original_hash = file_checksum("original_file.txt")
current_hash = file_checksum("downloaded_file.txt")

if original_hash == current_hash:
    print("파일이 손상되지 않았습니다.")
else:
    print("파일이 손상되었거나 변조되었습니다.")

Salt를 이용한 비밀번호 암호화

해시 함수는 같은 데이터에 대해 항상 같은 해시 값을 생성하므로, 비밀번호를 저장할 때는 salt를 추가해 보안을 강화할 수 있다. Salt는 임의의 문자열을 비밀번호에 추가하여 해시 값을 변형하는 기법이다.

import os

# Salt와 SHA-256 해시 적용
password = "securepassword"
salt = os.urandom(16)  # 임의의 16바이트 salt 생성
hash_object = hashlib.sha256(salt + password.encode())
password_hash = salt + hash_object.digest()

print(f"Salt + 해시된 비밀번호: {password_hash.hex()}")

다양한 해시 알고리즘 사용하기

hashlib에서는 여러 해시 알고리즘을 지원하며, 사용 가능한 알고리즘 목록은 hashlib.algorithms_available로 확인할 수 있다.

print(hashlib.algorithms_available)  # 사용 가능한 해시 알고리즘 목록 출력

알고리즘 선택 예시

hash_object = hashlib.new("sha512")  # SHA-512 해시 생성
hash_object.update(text.encode())
print(f"SHA-512 해시 값: {hash_object.hexdigest()}")

정리

hashlib은 데이터 보안을 강화하고 무결성을 유지하기 위해 Python에서 널리 사용되는 라이브러리이다. 다양한 해시 알고리즘과 Salt 기법을 통해 데이터를 안전하게 관리할 수 있으며, 파일 무결성 검사와 비밀번호 암호화 같은 작업에 활용할 수 있다. 보안이 필요한 애플리케이션 개발에서 hashlib의 주요 기능들을 익혀두면 많은 도움이 된다.

profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN