[python] 해시 알고리즘
해시 알고리즘은 임의의 길이의 데이터를 고정된 크기의 값으로 매핑하는 알고리즘입니다. 이러한 매핑된 값은 보통 해시 코드 또는 해시 값이라고 불립니다. 해시 알고리즘은 데이터의 신속한 검색이나 비교를 위해 사용되며, 보안, 데이터베이스, 암호학 등 다양한 분야에서 쓰입니다.
해시 알고리즘의 특징
- 고정된 크기의 출력: 입력 데이터의 크기와 상관없이 항상 일정한 크기의 해시 값이 출력됩니다.
- 압축 함수: 입력 데이터의 길이를 고정된 해시 값으로 압축하는 함수가 사용됩니다.
- 고유한 특징: 서로 다른 입력값에 대해 동일한 해시 값이 만들어지는 충돌이 발생하는 해시 충돌은 최소화해야 합니다.
- 빠른 실행 속도: 일반적으로 해시 알고리즘은 빠른 실행 속도를 가지고 있어 대용량 데이터 처리에 유용합니다.
- 단방향 함수: 해시 함수는 일방향이므로 해시 값으로부터 입력 데이터를 추론하기 어렵습니다.
Python에서의 해시 알고리즘
Python은 hashlib
라이브러리를 통해 다양한 해시 알고리즘을 제공합니다. 가장 널리 알려진 SHA-1, SHA-256, MD5 등의 알고리즘을 지원하며, 간단하게 사용할 수 있습니다.
아래는 hashlib
라이브러리를 사용하여 문자열을 SHA-256으로 해시하는 예제 코드입니다.
import hashlib
def hash_string(input_string):
# hashlib.sha256() 메서드를 사용하여 SHA-256 객체 생성
hash_obj = hashlib.sha256()
# 입력 문자열을 인코딩하여 해시 객체에 전달
hash_obj.update(input_string.encode())
# 해시 값 출력
return hash_obj.hexdigest()
input_string = "Hello, World!"
hashed_string = hash_string(input_string)
print(hashed_string)
위 코드는 "Hello, World!"
라는 문자열을 SHA-256 해시 값으로 변환해줍니다. hashlib.sha256()
메서드로 SHA-256 객체를 생성하고, update()
메서드로 입력 문자열을 전달합니다. 그리고 hexdigest()
메서드를 호출하여 해시 값을 출력합니다.
참고 자료
- Python 공식 문서: hashlib - Secure hashes and message digests
- Wikipedia: Hash function