2014-01-18 61 views
3

我已经使用md5()此目的如何加密密码使其不易被破解?

// username and password sent from form 

$username=$_POST['myusername']; 
$password=$_POST['mypassword']; 
$encrypted_password=md5($password); 

$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$encrypted_password'"; 
$result=mysql_query($sql); 

但是我听说它是​​不是安全。 我是初学者,所以请给我一个好的密码加密方法?如果发布的数据被拦截,它会以明文形式显示吗?

+0

使用PHP的[password_ *](HTTP:// WWW。 php.net/manual/en/function.password-hash.php)函数 –

+0

让mysql处理加密怎么办? 一般而言,您可以说复杂的密码很难破解,因此请尝试设置强制实施强密码的策略。 – blissini

+3

如果你不使用HTTPS,那么是的,密码是从客户端发送的。 –

回答

1

我是初学者所以请建议我一个好的密码encryting方法

利用crypt()代替md5()

<?php 
$hashed_password = crypt('mypassword'); // let the salt be automatically generated 
if (crypt($user_input, $hashed_password) == $hashed_password) { 
    echo "Password verified!"; 
} 
?> 

PHP Manual

一些例子

如果发布数据被拦截,它会被视为visibl e作为明文吗?

Ofcourse!如果您真的担心这一点,请在您的域上配置一个SSL证书。

+1

关于ssl证书的详细说明.... let me google it ...无论如何thanx为您的努力 – Akshay

+1

警告:在这种形式下使用crypt()会生成一个无害的DES散列,这对于您来说是非常不安全的哈希密码! – martinstoeckli

+0

好点。但是这比'md5()'更安全。 –