我可以使用base64编码的字节串作为Django的密钥吗?

时间:2017-06-02 17:39:01

标签: python django cryptography

在Django中生成我的SECRET_KEY是否可以接受

base64.base64encode(os.urandom(32))

或将使用

binascii.hexlify(os.urandom(32))

是更好的选择吗?

如果这些都没有,你会建议什么?我试图避免使用Django的get_random_string,因为我不认为这是安全的。这适用于生产环境。我也可以增加传递给os.urandom的整数,但我不确定什么值不是过度杀伤。

1 个答案:

答案 0 :(得分:1)

最好的选择是使用Django的get_random_secret_key方法。

# Return a 50 character random string usable as a SECRET_KEY setting value.
from django.core.management.utils import get_random_secret_key
SECRET_KEY = get_random_secret_key()

这些建议都没有使SECRET_KEY更安全。你仍然只是生成一个随机的字符串。如果您真的担心安全性,可以增加生成的随机字符串的长度。 get_random_secret_key实际上只是get_random_string的别名,它改变了返回字符串的字符集和长度:

# generate an even longer random string usable as a SECRET_KEY setting
from django.utils.crypto import get_random_string
chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
SECRET_KEY = get_random_string(100, chars)