盐渍密码

时间:2014-09-05 20:41:25

标签: python hash passwords salt

我正在尝试使用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'

1 个答案:

答案 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