【发布时间】:2016-05-20 18:57:14
【问题描述】:
我的问题是在用户登录时的登录页面我收到此错误,sha256 功能未在 mysql 中实现。我的代码有问题还是不再支持 sha2。是否有其他方法可以在 mysql.hash 中对密码进行哈希处理。
警告:hash():未知哈希算法:sha2
create_account.php
//create account
$query = "INSERT INTO mytable (username,fname,lname,country,age,gender,password)
VALUES ('$username','$fname','$lname','$country',$age','$gender',SHA2('$password', 224))";
登录.php
//check if password match
$hased_password= hash("sha2", $password);
$hased_password= mysqli_real_escape_string($conn,$hashedPass);
$query = mysqli_query($conn,"select * from mytable where password= '$hased_password' AND username='$username'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
$_SESSION['username']=$username;
$_SESSION['fname'] = $fname;
header("location: userPage.php");
} else {
$error = "username or password is invalid";
}
mysqli_close($conn);
【问题讨论】:
-
我建议使用 PHP 的
password_hash()和password_verify()来管理密码。 -
在插入记录之前使用
hash("sha2", $password);并将哈希传递给插入语句怎么样? -
另外,
sha2不是散列算法,它是算法的家族。您需要选择sha256、sha512等内容,并确保在 PHP 和 MySQL 中使用 same 位长度。 -
@RocketHazmat 哦,我明白了,不支持 sha256 和 sha512 我会试试你的建议
-
太糟糕了,我的 Stack Overflow 帐户在罚单中。因为我有大约400分,所以我一直无法提问!但是,我很乐意尽我所能提供帮助。告诉我如果我得到足够的分数,我就可以走出禁区。