如何加密插入MySQL表的密码?

Tre*_*ker 5 php mysql hash sha512

我有一些代码注册工作,但我不知道如何哈希密码.我想用sha512.

$con=mysqli_connect("localhost","root","","users");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO users (username, password, email)
VALUES
('$_POST[username]','$_POST[password]','$_POST[email]')";

if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "Thank you.";

mysqli_close($con);
Run Code Online (Sandbox Code Playgroud)

我知道我的mysql登录没有密码.这是一个刚用于测试的本地mysql服务器.

Geo*_*ins 5

您可以使用该hash()函数来哈希密码:

$hashed_password = hash('sha512', $_POST['password']);
Run Code Online (Sandbox Code Playgroud)

然后修改insert语句以将散列密码插入数据库:

INSERT INTO users (username, password, email)
VALUES ('$_POST[username]', '$hashed_password', '$_POST[email]');
Run Code Online (Sandbox Code Playgroud)

请注意,由于您使用的是未经过授权的用户输入,因此您的SQL语句容易受到SQL注入攻击.为了提高安全性并保护数据的完整性,请在SQL语句中使用之前考虑转义和验证输入.实现此目的的一种方法是mysqli_real_escape_string():

$escaped_username = mysqli_real_escape_string( $con, $_POST['username'] );
$escaped_email = mysqli_real_escape_string( $con, $_POST['email'] );
Run Code Online (Sandbox Code Playgroud)