如何在Python 3中实现crypt选项?
我知道使用的是:
Hash = crypt.crypt(password, salt)
但是,该函数具有一组不同的散列函数。来自文档:
crypt.METHOD_SHA512 模块化加密格式方法,包含16个字符的盐和86个字符的哈希值。这是最强的方法。
crypt.METHOD_SHA256另一种带有16的模块化加密格式方法 字符盐和43个字符哈希。
crypt.METHOD_MD5具有8个字符的另一个模块化加密格式方法 盐和22个字符哈希。
crypt.METHOD_CRYPT传统的方法,使用2个字符的盐和 哈希的13个字符。这是最弱的方法。
我的问题是如何选择函数使用的算法?
这是一个非常基本的问题,我无法相信我自己找不到答案 - 如果我浪费你的时间,我道歉。
答案 0 :(得分:1)
您将该方法作为salt参数传递。来自crypt function docstring:
如果未指定
salt
或None
,则最强 将选择可用的方法并生成盐。除此以外,salt
可以是crypt.METHOD_*
值之一,也可以是字符串 由crypt.mksalt()
返回。
例如:
crypt.crypt("password", crypt.METHOD_SHA512)
引人注目的是:
crypt.crypt("password", crypt.mksalt(crypt.METHOD_SHA512))
答案 1 :(得分:1)
使用bash:$ OverlayConfig
$ 6 $用于SHA512,如果您使用像我这样的bash终端,则$必须用\转义。
答案 2 :(得分:0)
从Red Hat solution和@Leonard_Saracini答案中改编而成(删除反斜杠以使其成为一体):
python3 -c 'import crypt,getpass,sys; \
print(crypt.crypt(getpass.getpass(), crypt.mksalt(crypt.METHOD_SHA512)))'
从2018年8月开始,这应该是安全的。