保护数据库中的密码字段


Protect password field in a database

可能重复:
在数据库中存储密码的最佳方式

我有一个数据库(mySQL(,表USERS的结构如下:

  • 用户ID(varchar(
  • 密码(varchar(
  • 名称(varchar(
  • BancAccount(varchar(

Passwd和BancAccount是数据库中的纯文本。从PHP代码中,登录完成后,它将用户输入的UserID和Passwd与数据库中的结果进行比较。

我想让它更安全,这样,如果有人能够闯入数据库,他就看不到这两个关键字段。有什么建议吗?

感谢

尝试使用PHP crypt函数并使用数据库来存储salt,以跟进Neal所说的内容,确保您也尝试使用一些模糊来隐藏它。。。但是您稍后需要salt来比较用户输入。

PHP Crypt((

好吧,你可以用salt散列密码。并有一个完全独立的银行账户表,该表以某种方式与该表相连,但非常模糊。

您绝对不应该以明文形式存储密码,而应该只存储其中的一个散列,充其量是一个加盐的散列。

使用哪种哈希函数以及如何选择salt也是一个重要问题。许多人建议使用bcrypt作为具有成本参数的密码的哈希函数,以调整生成哈希值的计算成本(越昂贵的暴力攻击将持续越长时间(。salt应该是一个随机值,并且对于每个密码都是唯一的。

我建议把一个包含密码的集中字符串放在一起;还调用了"Salt and Pepper"的密码,然后用SHA1对其进行加密。然后在检查数据库字段时使用相同的算法。

$salt = "a7s8as98sa9";
$pepper = date("H");
$hash = sha1($salt . $password . $pepper);

使用动态盐,如随机生成的字符串、数字、日期或时间戳,只是创造力的冰山一角。