如何在mysql中创建带密码字段的表?

Gen*_*nik 12 mysql

我应该将密码列创建为常规varchar,然后像这样插入:

sha1($pass_string)
Run Code Online (Sandbox Code Playgroud)

或者我应该在创建表时做一些额外的事情以确保密码字段是安全的?

谢谢!

yka*_*hou 13

这是一个普通的varchar字段(40个字符)但如果你想设置它更安全,你应该使用salt.

http://highedwebtech.com/2008/04/25/season-your-passwords-with-some-salt/

更新:

警告:没有盐的哈希密码真的很难!你永远不应该使用它!

密码腌制是这样做的好方法: 密码腌制

正如pst所建议的那样:

  • 使用SHA-1和盐是更天真但非常安全的方法.

  • 使用bcrypt:

这是更安全的方法:)因为它使用速度以使其更安全,bfish是围绕加密方法blowfish构建的哈希函数.(似乎比twofish还存在,应该是河豚的"现代"版本).

它是一个使用SHA-1链的版本,所以它是一个中间解决方案,但允许根据您的需要设置速度.事实上,速度会降低您的安全性.

  • 还应该使用不同的("计算成本更高")函数,例如`bcrypt`和/或使用HMAC-hash. (2认同)
  • 是的,绝对是你的哈希.此外,如果您为每个用户使用不同的盐,则有助于防止彩虹表攻击:http://en.wikipedia.org/wiki/Rainbow_table (2认同)