我正在尝试使用salt来哈希密码。但是,命令提示符(使用Python) 仅截断为8个密码字符和2个盐字符。如何缓解这个问题?
例如,
python -c "import crypt; print crypt.crypt('password', '\$6\$123456789012345678901234567890')"
python -c "import crypt; print crypt.crypt('password', '\$6\$12')"
输出相同的哈希值。
***修改
例如,
>>> import crypt
>>> crypt.crypt('password', '$6$1234')
'$6FMi11BJFsAc'
>>> crypt.crypt('password', '$6$12345678')
'$6FMi11BJFsAc'
>>> crypt.crypt('passwordddd', '$6$1234')
'$6FMi11BJFsAc'
答案 0 :(得分:1)
您拥有的版本似乎有效。我不确定你的问题是什么。可能你的shell将$
扩展为变量$12
(可能是空$1234567890
,这将导致两者具有相同的哈希值。)
你的版本似乎在我的shell中为我工作。
$ python -c "import crypt; print crypt.crypt('password', '\$6\$123456789012345678901234567890')"
$6$1234567890123456$YfUD.j5zIFtfV6VgikPof2dzCCCZwL2YDraBX4HXi.J7iNq24667epYUCZGxExqOmHTnPWybzfYaynT29vKXJ/
$ python -c "import crypt; print crypt.crypt('password', '\$6\$12')"
$6$12$EmCj0n6cuRQPJkS9i8q9F9JzlbErFPXFeUH7zwAT1yfBuwP7L60bNzWNvizJifxL6Dsd2mLIOFfcHyCbRoYSd0
最简单的方法是在python(或ipython)中进行测试:
In [1]: import crypt
In [2]: crypt.crypt('password', '$6$1234')
Out[2]: '$6$1234$uFHFs4h9DJ5rE/WaDk5aY3NJnYNKmONANVjomZwpeX8nQNvB./mwRpxs.n1S2nemH.cUtLYJWSbk/cQQ4Hd2N0'
In [3]: crypt.crypt('password', '$6$12345678')
Out[3]: '$6$12345678$I8tr4xFAC6/TtjYWdp0LWEjQre2LcYm2jdSMNLQDIyqRv.cKo7KMD5/HpzVVFKpUQlIekr/Vw.OdImtRM85fg/'
或者从linux命令行:
$ python -c 'import crypt; print crypt.crypt("password", "$6$12345678")'
$6$12345678$I8tr4xFAC6/TtjYWdp0LWEjQre2LcYm2jdSMNLQDIyqRv.cKo7KMD5/HpzVVFKpUQlIekr/Vw.OdImtRM85fg/
$ python -c 'import crypt; print crypt.crypt("password", "$6$12")'
$6$12$EmCj0n6cuRQPJkS9i8q9F9JzlbErFPXFeUH7zwAT1yfBuwP7L60bNzWNvizJifxL6Dsd2mLIOFfcHyCbRoYSd0