跳转至

基础

文档

from cryptography.fernet import Fernet
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import time

简单加密

简单但非常有效

# 生成密钥
key = Fernet.generate_key()

# 加载密钥
x = Fernet(key)

# 加密
x.encrypt_at_time(data=b"明文", current_time=int(time.time()))  # current_time 可选

# 解密
x.decrypt(b'秘文')

密钥轮换

全部密钥 有一个正确就可以解密

# 加载全部密钥
x = MultiFernet([密钥1, 密钥2, 密钥3])

# 解密
x.decrypt(b'秘文')

密码获取 Key

用密码获取Key

password = b"密码"


kdf = PBKDF2HMAC(
     algorithm=hashes.SHA3_512(),  # 单向撒列函数 
     length=32,
     salt=b'盐',
     iterations=100000,  # 拉伸
)
key = base64.urlsafe_b64encode(kdf.derive(password))

随机数

# 随机数 bytes
iv = os.urandom(16)
# 16进制
iv = os.urandom(16).hex()
# 随机数
iv = int.from_bytes(os.urandom(1), byteorder="big")