from cryptography.fernet import Fernet
import base64
# Put this somewhere safe!
key = Fernet.generate_key()
f = Fernet()
token = f.encrypt(b"A really secret message. Not for prying eyes.")
token
print f.decrypt(token)
如何生成自己的密钥而不是fernet.genrate_key()
发布于 2019-08-10 08:48:20
在fernet中,可以使用fernet Key Derivation Functions之一来生成密钥
fernet提供的功能之一是“基于口令的密钥导出功能2”。在Using Passwords with Fernet上可以找到一个使用PBKDF2HMAC的示例。在git issue #1333 of pyca/cryptography中对此进行了讨论,maebert指出,该示例使用salt=os.urandom(16),并将在每次使用不同的Salt值构造KDF类时从密码生成一个新密钥。
如果需要使用自定义密钥派生函数,请查看kdf和pbkdf2的源代码,以获得实现KeyDerivationFunction接口的类的示例。
匹配其签名并实现接口的类应该能够作为自定义密钥派生函数插入。
发布于 2017-06-14 00:37:44
该实现展示了如何做到这一点:
return base64.urlsafe_b64encode(os.urandom(32))
因此,要生成自己的随机字节,您需要生成32加密安全的随机字节,然后对它们进行urlsafe
base64编码。当然,由于generate_key
已经这样做了,所以您可能应该直接调用它,除非您需要在Python进程之外生成密钥。
发布于 2018-05-29 10:14:11
在Bash中,您可以执行以下操作:
dd if=/dev/urandom bs=32 count=1 2>/dev/null | openssl base64
来源:
https://stackoverflow.com/questions/44432945
复制相似问题