본문 바로가기

Programming/Python

파이썬으로 파일의 MD5, SHA-1 해시(Hash) 값 구하기

반응형

파이썬으로 MD5나 SHA-1 등의 해시값을 구하는 것은 간단합니다.

hashlib의 기능을 사용하면 간단하게 값을 구할 수 있습니다.

먼저 hashlib를 import 합니다.

import hashlib

그리고 파일을 열어 줍니다.

f = open("d:\\test.txt", "rb")

마지막으로 다음과 같이 입력하면 16진수로 표현된 SHA-1값을 얻을 수 있습니다.

hashlib.sha1(f.read()).hexdigest()

다만 이 방법으로는 큰 파일의 해시값을 구할 수가 없기 때문에 다음과 같이 하면 됩니다.

import hashlib

def sha1_for_largefile(filepath, blocksize=8192):
    sha_1 = hashlib.sha1()
    try:
        f = open(filepath, "rb")
    except IOError as e:
        print("file open error", e)
        return
    while True:
        buf = f.read(blocksize)
        if not buf:
            break
        sha_1.update(buf)
    return sha_1.hexdigest()

파일 경로를 입력하면 SHA-1 값을 전달받을 수 있습니다.

MD5 값은 sha1 부분만 md5로 변경하면 값을 얻을 수 있습니다.

이 외에도 sha224, sha256, sha384, sha512도 지원하기 때문에 원하는 값에 맞게 호출하면 됩니다.

반응형