hashlib
The Python hashlib
module provides a common interface to many secure hash and message digest algorithms, such as SHA-256 and MD5.
These algorithms allow you to generate fixed-size hash values from arbitrary input data, which is useful for data integrity checks, password storage, and more.
Here’s a quick example:
>>> import hashlib
>>> hashlib.sha256(b"Real Python").hexdigest()
'4a2b42c72ead91c16165d81622a347d5d65addb3a6984927b8322af26827baf3'
Key Features
- Provides a common API for many hash algorithms
- Supports secure hash functions like SHA-256, SHA-512, and others
- Includes the MD5 algorithm for legacy purposes
- Allows creating hash objects for iterative data feeding
Frequently Used Classes and Functions
Object | Type | Description |
---|---|---|
hashlib.new() |
Function | Creates a hash object for a given algorithm name |
hashlib.sha256() |
Function | Creates a SHA-256 hash object |
hashlib.md5() |
Function | Creates an MD5 hash object |
hashlib.algorithms_guaranteed |
Constant | Set of algorithms guaranteed to be supported |
Examples
Using md5
for a quick checksum (not secure for cryptographic purposes):
>>> hash_object = hashlib.md5(b"Real Python")
>>> hash_object.hexdigest()
'5245ae598714e551418aa6d5cc2cf5bc'
Iteratively updating a hash object:
>>> hash_object = hashlib.sha256()
>>> hash_object.update(b"Real ")
>>> hash_object.update(b"Python")
>>> hash_object.hexdigest()
'4a2b42c72ead91c16165d81622a347d5d65addb3a6984927b8322af26827baf3'
Common Use Cases
- Verifying data integrity with checksums
- Storing passwords securely using dedicated password hashing algorithms
- Creating unique identifiers for data
Real-World Example
Suppose you want to verify the integrity of a downloaded file by comparing its SHA-256 hash to a known value. Here’s how you could accomplish this using hashlib
:
>>> import hashlib
>>> def calculate_file_hash(file_path):
... hash_obj = hashlib.sha256()
... with open(file_path, "rb") as file:
... while chunk := file.read(8192):
... hash_obj.update(chunk)
... return hash_obj.hexdigest()
>>> known_hash = "expected_sha256_hash_value"
>>> file_hash = calculate_file_hash("downloaded_file.txt")
>>> file_hash == known_hash
True
In this example, you use hashlib
to compute the SHA-256 hash of a file in chunks, ensuring efficient memory usage for large files. This allows you to verify the file’s integrity by comparing the computed hash to a known value.
Related Resources
Tutorial
Build a Hash Table in Python With TDD
In this step-by-step tutorial, you'll implement the classic hash table data structure using Python. Along the way, you'll learn how to cope with various challenges such as hash code collisions while practicing test-driven development (TDD).
By Leodanis Pozo Ramos • Updated July 9, 2025