假设我有成千上万的用户,我想让密码非常安全。现在,我知道这md5()
不是最安全的使用方法,但是我认为可以做的就是加盐(我知道这不是什么新鲜事)。因此,为此我正在考虑创建两个表,一个名为accounts
,它将包含与帐户相关的所有信息,一个名为表列salt
,第二个表将被称为类似auth
并具有字段account_id, password
首先,我在注册时创建一个盐(随机生成)
$salt = "#52/sBsO8";
然后所有提供的信息都转到accounts
salt 是其中之一
然后在成功将信息放入数据库后,我创建了要存储在auth
表中的密码,这样密码不是用户输入的密码的 md5,而是盐的 md5 和用户输入的密码
所以密码auth
是
$password = md5($user_entered_password . $salt);
测试字符串:PHP 代码
$password = "123";
$salt = "#52/sBsO8";
echo md5($password) ." / ";
echo md5($password . $salt);
输出:202cb962ac59075b964b07152d234b70 / dfbf0b257c5182af0ae893c2680f4594
问题是:这是一种非常安全的密码处理方式吗?由于md5()
解密网站,有很多方法可以猜测密码。解密网站实际上并没有解密,md5()
它们只是拥有数百万个字符串的 md5 哈希值。