在Python中创建盐值
我想知道怎么在Python中生成一个随机的、16个字符的base-62盐值。这个盐值是我在一个协议中需要用到的,但我不知道从哪里开始。谢谢。
8 个回答
25
35
你不应该使用UUID,因为它们是唯一的,而不是随机的:使用CreateUUID()函数作为盐值是个好主意吗?
你的盐值应该使用加密安全的随机数,在Python 2.4及以上版本中,可以使用os.urandom来生成这些随机数(前提是你有一个好的时间源)。
# for some given b62encode function
salt = b62encode(os.urandom(16))
你也可以使用来自bcrypt的生成器,或者其他一些很棒的加密/哈希库,这些库都经过了比我更专业的人士的验证。
import bcrypt
salt = bcrypt.gensalt()
# will be 29 chars you can then encode it however you want.
35
>>> import random
>>> ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
>>> chars=[]
>>> for i in range(16):
chars.append(random.choice(ALPHABET))
>>> "".join(chars)
'wE9mg9pu2KSmp5lh'
这个应该可以正常工作。