3

我的数据库名称密码中有一个列,我只想在发布到数据库之前对密码进行散列或加密。我的 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;
}
?>

我可以知道应该把加密功能放在哪里吗?或者有什么方法可以加密密码?

4

4 回答 4

3

您可以使用 MySQLPASSWORD函数和 PHPcrypt函数。

MySQL函数的一个例子:

INSERT INTO table VALUES (PASSWORD('abcd'));
于 2013-08-13T04:00:23.080 回答
1

If you have PHP >= 5.5.0 then:

$password = password_hash('the password');

If you have an older version of PHP then use the compatibility library. Include the lib/password.php file and then use the documentation as usual.

于 2013-08-13T04:13:43.567 回答
0

首先,忘记 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 进行以下操作:

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

但是,使用 sha256,您必须确保数据库表中的密码字段长度为 64 或更多,即 varchar(64) 或 char(64)。请查看以下问题的答案作为指导:

此外,在您的 config.php 中,您可以定义一个诸如 $salt 之类的 slat,这将是一个要添加到每个密码的固定字符串:

//in your config.php
...
$salt = 'jhfdkjdhfTyhdh3365@jdh69kkshhQAAAiyeg'// some ungussed string
...
// in your hash code:

 $password = hash('sha256', $salt.$password_arr[$i]);
于 2013-08-13T04:18:57.243 回答
-1

如果您的密码是一个变量,请尝试使用类似这样的东西

$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

于 2013-08-13T04:03:23.507 回答