목차
- hashlib 모듈이란?
- 해시 함수란?
- hashlib의 주요 해시 알고리즘 목록 및 설명
- 문자열 해싱 예제
- 파일 해싱 예제
1. hashlib 모듈이란?
hashlib 모듈은 Python 내장 모듈로서 해시 함수를 제공하는 라이브러리입니다.
해시 함수를 사용하여 데이터를 고정된 길이의 고유한 해시 값으로 변환합니다.
이러한 해시 값은 원본 데이터를 대체하여 사용하며, 데이터 무결성 검사, 암호화, 비밀번호 저장 등에 활용됩니다.
hashlib 모듈은 Python 2.5 버전부터 기본으로 포함되어 있으며, 간단하고 안전한 해시 기능을 제공합니다.
2. 해시 함수란?
해시 함수는 임의의 길이의 데이터를 고정된 길이의 해시 값으로 변환하는 함수입니다.
이때, 입력 데이터의 크기가 달라도 항상 동일한 길이의 해시 값이 생성됩니다.
해시 함수는 원본 데이터와 해당 데이터의 해시 값을 매핑하는 역할을 수행하며, 데이터 무결성 검사, 무작위 데이터 생성, 암호화 등 다양한 용도로 활용됩니다.
3. hashlib의 주요 해시 알고리즘 목록 및 설명
hashlib 모듈은 여러 가지 해시 알고리즘을 지원합니다.
주요 해시 알고리즘에는 다음과 같은 것들이 있습니다.
- MD5: 128비트 해시 값 생성, 보안에 취약하여 현재는 권장되지 않음
- SHA-1: 160비트 해시 값 생성, 보안에 취약하여 현재는 권장되지 않음
- SHA-256: 256비트 해시 값 생성, 현재 가장 보편적으로 사용되는 해시 함수
- SHA-512: 512비트 해시 값 생성, 강력한 보안을 제공하는 해시 함수
위의 알고리즘들은 hashlib 모듈을 통해 사용할 수 있으며, 프로젝트의 보안 요구 사항에 따라 적절한 알고리즘을 선택하여 사용해야 합니다.
각 해시 알고리즘은 각 특성에 맞게 다른 길이의 결과를 반환한다. SHA-256, 512는 결과물의 비트 수를 의미한다.
4. 문자열 해싱 예제
다음은 hashlib 모듈을 사용하여 문자열을 해싱하는 예제입니다.
import hashlib
data = "Hello, hashlib!"
hashed_data = hashlib.sha256(data.encode()).hexdigest()
print("원본 데이터:", data)
print("해시 값:", hashed_data)
해싱된 값은 원본 데이터를 변경하지 않고도 항상 동일한 결과를 제공합니다.
5. 파일 해싱 예제
다음은 hashlib 모듈을 사용하여 파일을 해싱하는 예제입니다.
import hashlib
def hash_file(filename, algorithm="sha256"):
hasher = hashlib.new(algorithm)
with open(filename, "rb") as file:
while chunk := file.read(65536):
hasher.update(chunk)
return hasher.hexdigest()
filename = "/home/wonseok/jmeter.log"
hashed_file = hash_file(filename)
print(hashed_file)
이와 같이 파일의 해시 값을 구할 수 있습니다.
파일 해싱은 파일의 무결성 검사와 버전 관리에 유용하게 사용됩니다.