Skip to main content

Implementing Encryption and Secrets Management

We'll use cryptography.fernet for authenticated symmetric encryption and hashlib+pbkdf2_hmac for key derivation.

Example: derive a key from a passphrase

import os, hashlib, base64
from cryptography.fernet import Fernet

def derive_key(passphrase, salt=None):
if salt is None:
salt = os.urandom(16)
key = hashlib.pbkdf2_hmac('sha256', passphrase.encode('utf-8'), salt, 100000)
return base64.urlsafe_b64encode(key), salt

# Usage
k, s = derive_key("correct horse battery staple")
f = Fernet(k)
token = f.encrypt(b"secret")
print("Encrypted:", token)

Lesson: Use standard, well-reviewed libraries and derive keys securely from passphrases.