我应该将密码列创建为普通的varchar,然后像这样插入数据吗:
sha1($pass_string)
或者我应该在创建表时采取额外措施来确保密码字段的安全性?
谢谢!
我应该将密码列创建为普通的varchar,然后像这样插入数据吗:
sha1($pass_string)
或者我应该在创建表时采取额外措施来确保密码字段的安全性?
谢谢!
这是一个普通的varchar字段(40个字符),但如果您想使其更安全,应该使用盐。
http://highedwebtech.com/2008/04/25/season-your-passwords-with-some-salt/
更新:
警告:不加盐的哈希密码非常脆弱!决不能使用它!!
加盐是正确的方法: password salting
根据pst的建议:
使用SHA-1和盐是更朴素但相当安全的方法。
使用bcrypt:
这是更安全的方法 :) 因为它利用速度来使其更安全,bfish是围绕加密方法blowfish构建的哈希函数。(似乎twofish也存在,应该是blowfish的“现代”版本)。
这是一种使用SHA-1链的版本,因此它是中间解决方案,但允许根据需要设置速度。实际上,速度会削弱您的安全性。
大多数人都像您建议的那样保存哈希值。它足够安全和简单,是一个不错的选择。
请注意,所有哈希值最终都可以被破解,因此任何哈希值都比没有好,而SHA足够强大。
bcrypt
和HMAC可以帮助解决这个问题。) - user166390
bcrypt
和/或使用HMAC哈希。 - user166390bcrypt
已经为此设计,我认为没有必要“再造一个”(除非你正在设计新的算法/方法)。 - user166390