如何将密码从明文格式加密为MD5哈希


how to encrypt password from plain text format to MD5 hash

我尽量解释…

在我的项目开始时,我只是以纯文本格式存储密码,现在在将其上传到服务器之前,我想用MD5散列它们,当用户登录时,他像以前一样使用简单的密码..

只是它们应该在数据库中散列。

我该怎么做,不改变很多在编码和登录脚本?

以及如何添加记住密码功能和忘记密码功能到简单的登录页面?任何链接,可以解决我的问题。

我在PHP和sql工作。

关于MD5问题:

UPDATE users SET password = MD5(password)

在验证用户凭据的登录脚本中,只需添加MD5函数即可:

SELECT id FROM users WHERE login = :login AND password = MD5(:password)

关于密码丢失功能的第二个问题在SO上有广泛的覆盖。

第一期运行这个查询

UPDATE urusertable SET password=md5(password);

和你的第二期当用户勾选"保持我登录"复选框时检查它,然后在你想要的时间设置一个cookie,

if(isset($_POST['remember'])){
setCookie('rememberhim','whateverurvalue',time()+3600*7);
}

则每次用户访问您的网站时检查cookie。如果你只是想自动填充登录字段,也存储用户名和密码在一个cookie,但这是一个非常糟糕的做法,自动填充。

PHP有一个MD5函数(你可能知道):

$password = mysql_result(mysql_query(SELECT `password` from `users`), 1);
$password = md5($password);
mysql_query(UPDATE `users` set `password` = '$password');

(显然,您需要调整上述代码以配合您的数据库结构)

如果你的数据库使用PHPMYADMIN,还有一个内置的MD5函数,理论上你可以使用它来一次更新所有的表。