我已经阅读了大约15分钟的Stack Overflow问题,每一个问题似乎都与之前的相矛盾。Bcrypt,SHA1,MD5等等。我目前使用MD5加密密码,但是我想在数据库被攻破时让它变得更加安全。
我知道这个问题已经被问了无数次,但我似乎找不到合适的答案。
谢谢。
我已经阅读了大约15分钟的Stack Overflow问题,每一个问题似乎都与之前的相矛盾。Bcrypt,SHA1,MD5等等。我目前使用MD5加密密码,但是我想在数据库被攻破时让它变得更加安全。
我知道这个问题已经被问了无数次,但我似乎找不到合适的答案。
谢谢。
salt
。$bytes = 50;
$salt = base64_encode(openssl_random_pseudo_bytes($bytes));
将此存储在数据库表中,最好是存储在外部数据库中。然后创建一个随机代码并与您的盐一起存储到外部数据库中。然后将随机代码存储在用户表中,攻击者几乎不可能找到您的盐。
之后,以以下方式存储您的密码:
$password_to_store_in_mysql = hash('sha512', $salt . $user_password);
当用户登录时,从外部数据库中获取盐并检查盐和密码是否匹配。
$salt = 'my very own salt'; // or maybe make a random string for your salt
然后执行
$more_difficult_password = md5($salt . $password);
您可以使用网站的密钥和每个用户的特定盐值与您的密码一起使用。您网站的密钥应该保存在数据库中,然后提取并使用。
组合结果如下。
$secret = "your key from database";
$salt = "user salt";// make it randomly
$password = $_POST['password'];
$new_pass = md5($secret.$salt.$password);
现在这些组合将存储在数据库中。
在登录时,再次使用此组合进行匹配。
我认为这可以更好地保护您的应用程序。
Cheers..!!