如何创建一个mysql"sha-256"列?

Dae*_*ead 4 java mysql encryption sha256

对于密码列,是否存在使用"sha-256"存储密码的mysql功能?或者我应该在Java代码中将其哈希(比如如何在Java中使用sha256散列一些字符串?),然后再将其存储在数据库中,然后每次哈希密码输入并与数据库列值进行比较以进行身份​​验证?

TIA.

Mar*_*ers 11

您可以将值转换为十六进制并使用具有适当长度的char(n)列 - 在这种情况下为64.可以使用设置为256 的sha2函数在MySQL中完成转换hash_length.

但出于安全原因,您不应使用SHA-256存储密码哈希值.

而是使用bcryptPBKDF2.

有关

  • @Tom:bcrypt和PBKDF2都使用[密钥拉伸](https://en.wikipedia.org/wiki/Key_stretching),这意味着即使是弱密码,密码仍然相对安全。SHA-256 没有这样的功能。例如,这里有一个很好的讨论:http://security.stackexchange.com/questions/52041/is-using-sha-512-for-storing-passwords-tolerable (4认同)
  • @Mark Byers 不使用 SHA-256 的安全原因是什么?你能引用一些东西来支持这个说法吗? (2认同)