我只是想知道2019年用PHP加密密码的最佳方法是什么。 我正在使用这种方法,但是很多人告诉我这是一种不安全的方法:
$password_Protect = md5($_POST["password"]);
我做了一些研究,但直到2017年才发现。那么,最好的方法是什么?
谢谢
答案 0 :(得分:5)
使用password_hash()
。
还要检查password_verify()
。
还要检查
示例:
$password = "ABCDabcd";
echo password_hash($password, PASSWORD_BCRYPT, array('cost'=>12));
该示例应输出如下内容:
$ 2y $ 12 $ N6FSH8yRo0YMQ4oPJHN1vOkv7GfK3OhVp22H / AjGoVLY.5Dm7ECYS
要验证: 假设用户输入了密码,然后将其存储在输入变量中;
$input = 'ABCDabcd';
$hashed_password = '$2y$12$N6FSH8yRo0YMQ4oPJHN1vOkv7GfK3OhVp22H/AjGoVLY.5Dm7ECYS';
if(password_verify($input,$hashed_password)){
echo 'password is valid';
}else{
echo 'Password is invalid';
}
此应返回的密码有效。
答案 1 :(得分:-1)
由于MD5已经很弱,因此您必须使用诸如SHA3之类的其他哈希函数,另一种最佳做法是将salt与密码结合使用以避免字典攻击。 阅读这些页面以获取更多信息: https://en.wikipedia.org/wiki/Secure_Hash_Algorithms http://php.net/manual/en/faq.passwords.php
欢呼