Шифрование столбца паролей в базе данных SQL

У меня есть столбец в моем пароле с именем базы данных, я просто хочу хэшировать или шифровать пароль перед отправкой в ​​базу данных. У меня есть код, подобный этому в моем файле отправки php.

<?php session_start(); include('config.php'); $ID=$_POST['ID']; $name=$_POST['name']; $password=$_POST['password']; $department=$_POST['department']; $email=$_POST['email']; $ID_arr=array(); $name_arr=array(); $password_arr=array(); $dept_arr=array(); $email_arr=array(); $i = -1; ++$i; $ID_arr[$i]= $_POST['ID']; $name_arr[$i]= $_POST['name']; $password_arr[$i]= $_POST['password']; $dept_arr[$i]= $_POST['department']; $email_arr[$i]= $_POST['email']; $j=0; while ( $j <= $i) { $ID = $ID_arr[$i]; $name = $name_arr[$i]; $password = $password_arr[$i]; $department = $dept_arr[$i]; $email = $email_arr[$i]; $sql = "INSERT INTO `employee`. `admin` (ID ,name ,password ,department ,email) VALUES ( '$ID' ,'$name' ,'$password' ,'$department' ,'$email' )"; $result = mysql_query($sql); if(!$result){ die('invalid query:'.mysql_error()); } else echo ("<tr><td>" . "You have been succesfully registered..." . "</td></tr>"); header('Refresh:5; url=adminlogin.php'); die; } ?> 

Могу ли я узнать, куда следует поместить функцию шифрования? Или любой способ зашифровать пароль?

Вы можете использовать функцию MySQL PASSWORD а также функцию PHP crypt .

Пример функции MySQL:

 INSERT INTO table VALUES (PASSWORD('abcd')); 

Если у вас PHP> = 5.5.0, то:

 $password = password_hash('the password'); 

Если у вас более старая версия PHP, используйте библиотеку совместимости . Включите файл lib/password.php а затем используйте документацию как обычно.

Прежде всего, забудьте md5 . Если вы используете PHP> = 5.1.2, вы можете использовать функцию hash () .

Из кода, который вы считали:

 ... $j=0; while ( $j <= $i) { $ID = $ID_arr[$i]; $name = $name_arr[$i]; $password = $password_arr[$i]; $department = $dept_arr[$i]; $email = $email_arr[$i]; ... 

Вам просто нужно сделать следующее для пароля $:

 $password = hash('sha256', $password_arr[$i]); 

Однако, используя sha256, вы должны убедиться, что поле вашего пароля в таблице базы данных имеет длину 64 или более по длине i, e varchar (64) или char (64). Посмотрите на следующий вопрос в качестве руководства:

  • При использовании хэша SHA256, сколько времени занимает хеш? (т. е. как долго должен быть мой mysql VARCHAR?)

Кроме того, в вашем config.php вы можете определить slat, например $ salt, который будет фиксированной строкой, которая будет добавлена ​​к каждому паролю:

 //in your config.php ... $salt = 'jhfdkjdhfTyhdh3365@jdh69kkshhQAAAiyeg'// some ungussed string ... // in your hash code: $password = hash('sha256', $salt.$password_arr[$i]); 

Если пароль является переменной, попробуйте использовать что-то вроде этого

 $input=mysqli_real_escape_string($con, $_POST['password']); $password = md5($input); 

И пусть ваш SQL будет чем-то вроде

 UPDATE table SET password='$password'; 

непроверенный код …

из фактического руководства.

http://php.net/manual/en/function.md5.php