我需要生成将存储在 Redis 服务器中的 API 密钥和机密。生成密钥和秘密的最佳方法是什么?
我正在开发一个基于 Django-tastypie 框架的应用程序。
原文由 Dhanushka Amarakoon 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要生成将存储在 Redis 服务器中的 API 密钥和机密。生成密钥和秘密的最佳方法是什么?
我正在开发一个基于 Django-tastypie 框架的应用程序。
原文由 Dhanushka Amarakoon 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您使用的是 Python 3.6 或更高版本,则可以使用 secrets 模块:
secrets 模块用于生成适用于管理数据(例如密码、帐户身份验证、安全令牌和相关秘密)的加密强随机数。
特别是,应优先使用 random 模块中的默认伪随机数生成器,后者是为建模和仿真而不是安全或密码学而设计的。
例如生成一个 16 字节的令牌:
>>> import secrets
>>> secrets.token_urlsafe(16)
'zs9XYCbTPKvux46UJckflw'
>>> secrets.token_hex(16)
'6bef18936ac12a9096e9fe7a8fe1f777'
原文由 Moby Duck 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答989 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
对于 python3.6+
对于 旧版本的 python :
对于生成随机数的一种非常安全的方法,您应该使用 urandom:
这将产生字节,调用
key.decode()
如果你需要一个字符串对于 一般的非安全随机字符串,通过更多设置,您可以通过 python 方式生成所需长度的密钥:
然后你可以用你想要的长度来调用它
key = generate_key(40)
。您可以指定要使用的字母表,例如仅使用
string.ascii_lowercase
键只包含小写字母等。tastypie 中也有用于 Api 身份验证的模型,可能值得一试 https://django-tastypie.readthedocs.org/en/latest/authentication.html#apikeyauthentication