使用php加密密码

时间:2009-07-23 13:15:11

标签: php

我需要加密密码并将其存储在数据库中。我添加了一个代码 “$ newpass = md5($ pass_word);”在PHP文件中。但仍然无法正常工作

<?php
$hostname   =   "xxxx";
$username   =   "xxxx";
$password   =   "xxxx";
$dbName     =   "xxxx";
$user_name='';
$pass_word='';
$email='';
$errormsg='';
$subject='';
$message='';
$newpass='';
$conn       =   mysql_connect($hostname,$username,$password) or die(mysql_error());
mysql_select_db($dbName);
if(isset($_POST["submit"]))
{
$user_name=$_POST['usr'];
$address1=$_POST['addr1']; 
$address2=$_POST['addr2'];
$pass_word=$_POST['pswd'];
$newpass= md5($pass_word); 
$email=$_POST['email'];
if(empty( $user_name))
 {
   $errormsg='<br>enter the name S';

 }
if(trim($address1)=="")
 {
   $errormsg="<br>entre the address1 S";
   //echo $errormsg;
  } 
if(trim($address2)=="")
 {
   $errormsg="<br>entre the address2 S";
   //echo $errormsg;
  } 
if(trim($pass_word)=="")
 {
   $errormsg="<br>entre the password S";
   // echo $errormsg;
  } 
if(trim($email)=="")
{
   $errormsg="<br> enter the email S";
   // echo $errormsg;
}
$message="your username is".$user_name."your passwod is".$pass_word;
if(strlen($errormsg)==0)
{
mysql_query("INSERT INTO `xxx` ( `id` , `Name` , `Address1` , `Address2` , `password` , `email` )
VALUES (
'', '$user_name', '$address1', '$address2', '$newpass', '$email'
)")or die(mysql_error()); ;
echo $newpass;
echo "you have successfully registered ";

}
mail($email,$subject,$message);
}
?>

这是我的php页面。

4 个答案:

答案 0 :(得分:5)

输入可能有问题,因为语法正确。虽然md5散列并不是一种不好的做法,但它本身相对不安全。为了增加一小部分安全性,我通常会这样做(hash salting):

<?php

function md5_salted($string,$salt){
    return md5( md5($string) . md5($salt) );
}

$salt = "wQfChpLYWFtiQV8d9Cao";
echo md5('userPassword'); // 221068207e125b97beb4e2d062e888b1
echo md5_salted('userPassword', $salt); // 07d9ffd0115e61fb22f857b7d252339c

?>

值得注意:正如其他人所说,这是哈希,而不是加密。如果您对加密感兴趣,请调查TLS/SSL

答案 1 :(得分:2)

好吧,那会破解密码,而不是加密密码。哈希可能是你真正想要的。

答案 2 :(得分:1)

首先,md5不是加密,它是一个散列函数(更多在wikipedia中)。它可以用来安全地将它存储在DB中。但是你提供的用法很好,应该可行。你应该详细说明“它不起作用”是什么意思。

此代码:

<?php
$pass = 'secret';
$newpass = md5($pass);
echo $newpass;
?>

输出到:

5ebe2294ecd0e0f08eab7690d2a6ee69

答案 3 :(得分:0)

为什么不在sql查询中使用数据库(mysql)提供的md5函数:

mysql_query("INSERT INTO `xxx` ( `id` , `Name` , `Address1` , `Address2` , `password` , `email` )
VALUES (
'', '$user_name', '$address1', '$address2', MD5('$pass_word'), '$email'
)")or die(mysql_error());

另见http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_md5