在 python 中创建盐
如何在 python 中创建随机的 16 个字符的 base-62 盐?我需要它作为协议,但我不知道从哪里开始。谢谢。
How would I create a random, 16-character base-62 salt in python? I need it for a protocol and I'm not sure where to start. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
在 base64 中:
这将是 12 个字符
in base64:
this will be 12 chars
我认为你应该使用“秘密”模块来生成安全随机性 https://docs.python .org/3/library/secrets.html
它是专门为此类工作而设计的
i think you should use 'secrets' module to generate secure randomness https://docs.python.org/3/library/secrets.html
it specifically crafted for this kind of jobs
我有点喜欢:
这将是非常非常随机的。
I kind of like:
That will be very, very random.
这应该有效。
This should work.
您不应该使用 UUID,它们是唯一的,而不是随机的:使用 CreateUUID() 函数作为盐是一个好主意吗?
你的盐应该使用加密安全的随机数,在 python 2.4+ 中,os.urandom 是这些的来源(如果你有一个好的计时源)。
您还可以使用 bcrypt 或其他很棒的加密/哈希库的生成器被比我更专业的人所认识和审查。
You shouldn't use UUIDs, they are unique, not random: Is using a CreateUUID() function as salt a good idea?
Your salts should use a cryptographically secure random numbers, in python 2.4+, os.urandom is the source of these (if you have a good timing source).
you could also use a generator from bcrypt or other awesome crypto/hashing library that is well known and vetted by the people much more expert than I am.
老问题,新的解决方案 secrets
将产生一个加密强度高的 16 个字符的随机字符串。
使用它而不是标准伪随机数生成器,因为它们的安全性要低得多。
引用 secrets 页面:
Old question, new solution with secrets
Will produce a cryptographically strong 16-character random string.
Use this over standard pseudo-random number generators as they are much less secure.
To quote from the secrets page:
如今,
crypt
模块中有一个官方的mksalt
方法。它不会给你一个简单的 16 个字符长的字符串,而是在前面添加大多数哈希函数所需的
$digit$
。如果您要对密码进行哈希处理,那么使用这可能会更安全。生成如下输出:
These days there is an official
mksalt
method in thecrypt
module.It does not give you a simple 16 char long string but adds
$digit$
in front required by most hashing functions anyway. If you are hashing passwords this is probably much safer to use.Generates outputs like the following: