md5, sha1 là 2 hàm băm nổi tiếng nhất thường được sử dụng để mã hóa mật khẩu. Ngoài ra nó cũng thường được sử dụng để kiểm tra tính toàn vẹn của tệp tin, khi được sao chép từ nơi này sang nơi khác, hoặc tải trên mạng internet về. Hôm nay vinasupport.com sẽ hướng dẫn các bạn lấy giá trị md5 và sha1 của 1 file sử dụng ngôn ngữ lập trình Python.
Lấy giá trị md5 của file sử dụng Python
Với python 3.8+ trở lên
import hashlib with open("vinasupport.pdf", "rb") as f: file_hash = hashlib.md5() while chunk := f.read(8192): file_hash.update(chunk) # print(file_hash.digest()) # to get a printable str instead of bytes print(file_hash.hexdigest())
Kết quả:
Với python 3.7 trở xuống
with open("vinasupport.pdf", "rb") as f: file_hash = hashlib.md5() chunk = f.read(8192) while chunk: file_hash.update(chunk) chunk = f.read(8192) print(file_hash.hexdigest())
Chú ý: đọc file 8192 (or 2¹³) bytes sẽ giúp bạn giảm bộ nhớ sử dụng để xử lý code.
Lấy giá trị sha1 của file sử dụng Python
Với Python 3.11
import hashlib def sha256sum(filename): with open(filename, 'rb', buffering=0) as f: return hashlib.file_digest(f, 'sha256').hexdigest()
Với Python < 3.11
import hashlib def sha256sum(filename): h = hashlib.sha256() b = bytearray(128*1024) mv = memoryview(b) with open(filename, 'rb', buffering=0) as f: while n := f.readinto(mv): h.update(mv[:n]) return h.hexdigest()
Với Python < 3.8
import hashlib def sha256sum(filename): h = hashlib.sha256() b = bytearray(128*1024) mv = memoryview(b) with open(filename, 'rb', buffering=0) as f: for n in iter(lambda : f.readinto(mv), 0): h.update(mv[:n]) return h.hexdigest()
Lấy giá trị sum bằng thư viện Simple File Checksum
Trả về các giá trị MD5, SHA1, SHA256, SHA384, hoặc SHA512 của một file
Cài đặt bằng lệnh
pip3 install simple-file-checksum
Sử dụng
>>> from simple_file_checksum import get_checksum >>> get_checksum("tst/file.txt") '9e107d9d372bb6826bd81d3542a419d6' >>> get_checksum("tst/file.txt", algorithm="MD5") '9e107d9d372bb6826bd81d3542a419d6' >>> get_checksum("tst/file.txt", algorithm="SHA1") '2fd4e1c67a2d28fced849ee1bb76e7391b93eb12'
Bên trên là tất cả các cách đê lấy giá trị check sum md5, sha1 bẳng Python thông dụng nhất!