有可能解密MD5密码吗?

时间:2013-02-19 09:39:45

标签: php mysql

我想知道是否有可能解密MD5密码

3 个答案:

答案 0 :(得分:4)

  

我使用md5

自动为用户生成密码

别。 MD5 isn't safe

  

如何加密这些密码,我将其视为真实密码

我认为你的意思是“解密”。你不能。 MD5是一种散列算法,它被设计成不可逆的。

不要为您的用户生成密码。您的流程应该是:

  1. 用户生成密码
  2. 用户通过SSL向您发送密码
  3. 您散列密码(不是使用MD5)
  4. 存储哈希密码
  5. 当用户登录时:

    1. 用户通过SSL向您发送密码
    2. 您使用密码
    3. 您将散列密码与数据库中的散列进行比较

答案 1 :(得分:1)

只需将它们存储在加密的数据库中 - 这就是它的用途。

生成密码:

$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
$your_password_length = 8;
$password_unencrypted = '';
for ($i = 0; $i < $your_password_length; $i++) {
  $password_unencrypted .= $characters[rand(0, strlen($characters) - 1)];
} 

现在加密

$password_encrypted = md5($password_unencrypted);

现在你有两个变量 - password_unencrypted和password_encrypted。例如,您可以通过邮件将password_unencrypted发送给用户,但DB应包含加密密码。当用户登录时,您应该将他的加密输入与DB中的加密密码进行比较:

//..get the md5 from DB to $password_encrypted and then
if (md5($_POST['users_password_in_form']) == $password_encrypted){
// ...log in...
}

答案 2 :(得分:1)

关于密码和数据库的安全性,如果密码经过哈希处理或加密,那么用户访问密码s is if he somehow acess the database itself (probably he got the password), so does it really make的唯一方法是什么?   我在谷歌的第一次搜索结果中m asking cause we are trying to protect the user password, but if someone has acess to the database, he dont need the user password, he can make the changes on the database itself, and about the encrypting, i find on php manual that blowfish is the most indicated, but i找到了一个在线解密器。   你怎么看?提前谢谢。