擅长:python、mysql、java
<p>对于crypt模块的使用:</p>
<p>生成加密密码时,您提供salt。只要满足所列条件,就可以随机增加对暴力的抵抗力。在检查密码时,您应该提供getpwname中的值,以防您所在的系统支持更大的盐量,而不是自己生成。</p>
<p>一般性意见:</p>
<p>如果这与实际的系统登录无关,那么没有什么能阻止您使用比crypt更强大的方法。您可以随机生成N个字符的每用户salt,并将其与用户的密码组合在一个SHA-1散列中。</p>
<pre><code>string_to_hash = user.stored_salt + entered_password
successful_login = (sha1(string_to_hash) == user.stored_password_hash)
</code></pre>
<p>更新:虽然这对于rainbow表来说更加安全,但是上面的方法仍然有密码弱点。正确应用HMAC算法可以进一步提高您的安全性,但超出了我的专业领域。</p>