【发布时间】:2011-11-23 06:08:30
【问题描述】:
我是否应该将密码列创建为常规 varchar,然后像这样插入:
sha1($pass_string)
或者我应该在创建表时做一些额外的事情来确保密码字段是安全的?
谢谢!
【问题讨论】:
标签: mysql
我是否应该将密码列创建为常规 varchar,然后像这样插入:
sha1($pass_string)
或者我应该在创建表时做一些额外的事情来确保密码字段是安全的?
谢谢!
【问题讨论】:
标签: mysql
这是一个普通的 varchar 字段(40 个字符),但如果您想将其设置得更安全,您应该使用 salt。
http://highedwebtech.com/2008/04/25/season-your-passwords-with-some-salt/
更新:
警告:没有盐的哈希密码真的很弱!你永远不应该使用它!
密码加盐是这样做的好方法: password salting
根据 pst 的建议:
使用 SHA-1 和 salt 是更简单但非常安全的方法。
使用bcrypt:
这是更安全的方法 :) 因为它使用速度来使其更安全,bfish 是围绕加密方法河豚构建的散列函数。 (似乎也没有 twofish 存在,应该是河豚的“现代”版本)。
这是一个使用 SHA-1 链的版本,因此它是一种中间解决方案,但允许根据您的需要设置速度。事实上,速度会削弱您的安全性。
【讨论】:
bcrypt 和/或使用 HMAC 哈希。
bcrypt 已经为此设计,我认为没有必要“滚动另一个”(除非您正在设计一种新的算法/方法)。
The manual 很好地说明了要使用的列类型。
【讨论】:
大多数人都按照您的建议保存哈希。它足够安全和简单,是一个不错的选择。
请注意,所有哈希最终都可能被破解,因此任何哈希都比没有好,并且 SHA 足够强大。
【讨论】:
bcrypt 和 HMAC 可以帮助解决这个问题。)