我需要加密密码并将其存储在数据库中。我添加了一个代码 “$ 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页面。
答案 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