Мне нужно зашифровать пароль и сохранить его в db. я добавил код «$ 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-страница.
Возможно, что-то не так с вашим вводом, поскольку синтаксис верен. Хотя хеширование 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 .
Ну, это будет хэш-пароль, а не зашифровать его. Хешинг – это, вероятно, то, что вы на самом деле хотели.
Прежде всего, md5 не является шифрованием, это функция хеширования (больше в wikipedia ). Его можно использовать для безопасного хранения в БД. Но использование, которое вы предоставили, в порядке, должно работать. Вы должны уточнить, что значит «это не работает».
Этот код:
<?php $pass = 'secret'; $newpass = md5($pass); echo $newpass; ?>
Выходы:
5ebe2294ecd0e0f08eab7690d2a6ee69
Почему бы вам не использовать функцию md5, предоставленную базой данных (mysql) в запросе sql:
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