首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加密SQL数据库中的密码列

加密SQL数据库中的密码列
EN

Stack Overflow用户
提问于 2013-08-13 11:58:41
回答 4查看 2.9K关注 0票数 3

我在我的数据库名称密码中有一列,我只想在发布到数据库之前对密码进行散列或加密。在我的php提交文件中有一段类似这样的代码。

代码语言:javascript
复制
<?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;
}
?>

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

EN

回答 4

Stack Overflow用户

发布于 2013-08-13 12:00:23

您可以使用PHP PASSWORD函数,也可以使用MySQL crypt函数。

MySQL函数的一个示例:

代码语言:javascript
复制
INSERT INTO table VALUES (PASSWORD('abcd'));
票数 3
EN

Stack Overflow用户

发布于 2013-08-13 12:13:44

如果你有PHP >= 5.5.0,那么:

代码语言:javascript
复制
$password = password_hash('the password');

如果你有一个旧版本的PHP,那么使用compatibility library。包含lib/password.php文件,然后照常使用the documentation

票数 1
EN

Stack Overflow用户

发布于 2013-08-13 12:18:57

首先,忘了md5吧。如果您使用PHPPH5.1.2,则可以使用hash()函数。

根据您所考虑的代码:

代码语言:javascript
复制
...
$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执行以下操作:

代码语言:javascript
复制
$password = hash('sha256', $password_arr[$i]);

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

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

代码语言:javascript
复制
//in your config.php
...
$salt = 'jhfdkjdhfTyhdh3365@jdh69kkshhQAAAiyeg'// some ungussed string
...
// in your hash code:

 $password = hash('sha256', $salt.$password_arr[$i]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18200417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档