Fernet: authenticated symmetric token
Fernet là recipe của Python cryptography: token versioned chứa timestamp plaintext, IV, AES-128-CBC ciphertext và HMAC-SHA256. Nó cung cấp confidentiality + integrity khi secret key an toàn; không phải asymmetric encryption và không dùng để hash password.
from cryptography.fernet import Fernet, MultiFernet
key = Fernet.generate_key()
f = Fernet(key)
token = f.encrypt(b"sensitive value")
plaintext = f.decrypt(token, ttl=3600)Operations
- Token làm lộ creation time; không dùng nếu metadata này nhạy cảm.
ttlkiểm age khi decrypt nhưng không tạo authorization/revocation hoàn chỉnh.MultiFernetencrypt bằng key đầu, decrypt thử key list và hỗ trợ rotate token.- Fernet phù hợp payload nhỏ; file/stream lớn cần library streaming AEAD phù hợp.
- Java không có Fernet trong standard library; ưu tiên standard AEAD/protocol thay vì tự port recipe.