php kullanarak şifreyi şifrelemek

4 Cevap

I need to encrypt the password and store it in the db. i have added a code "$newpass= md5($pass_word);" in php file. but still its not working

<?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);
}
?>

Bu benim php sayfası.

4 Cevap

Sözdizimi gibi doğru bir şey, sizin girişi ile olası yanlış. Md5 karma kötü bir uygulama olmasa da, kendi nispeten güvensiz. Güvenlik, küçük bir ekstra katman eklemek için, ben genelde böyle bir şey yapmak (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

?>

Fazlalaştı: Diğerleri de belirtildiği gibi, bu şifreleme değil, karma bir. Eğer şifreleme ilgileniyorsanız, araştırmak TLS/SSL.

Eh, bu parolayı karma olur, bunu şifrelemek değil. Kıyımlama aslında olsa ne istediğini muhtemelen.

Her şeyden önce, bu MD5 (wikipedia daha fazla) bir müzakere fonksiyonu, bu şifreleme değildir. Oldukça güvenli bir veritabanında depolamak için kullanılan olabilir. Ama verdiğiniz kullanım çalışması gerekir, gayet iyi. Bunu "Bu iş değil" ne demek ayrıntılı olmalıdır.

Bu kod:

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

Çıkışlar için:

5ebe2294ecd0e0f08eab7690d2a6ee69

Neden sql sorguda (mysql) veritabanı tarafından sağlanan md5 fonksiyonu kullanmayın:

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

Ayrıca bakınız http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html#function_md5