登录加密与DB不匹配

时间:2011-07-23 19:47:59

标签: php mysql

我必须为用户创建一个注册表单...他们在表名用户中有一个名为Deparment的数据库。 DB Deparment包含varius列,包括“mail”“password”,它们使用ftp acounts,并使用邮件帐户从Deparment DB的users表中读取。

他们使用以下方法将用户直接创建到MySQL:

INSERT INTO `users` (`email`, `password`) VALUES ('user1@companyname.com', ENCRYPT('UserPassHere'));

直到那里一切正常......“user1@companyname.com”及其密码>> “UserPassHere”..可以使用相同的密码和用户名登录邮件和ftp。

我正在尝试创建该登录表单但不是运气..这是我在form_validator.php中尝试的内容:

INSERT INTO users (email, password) VALUES ('$_POST[email]', '".ENCRYPT($_POST['password']))";
INSERT INTO users (email, password) VALUES ('$_POST[email]', '".MYSQLENCRYPT($_POST['password']))";

如果我使用md5或crypt,数据会嵌入到DB中,但MAIL和FTP可以读取密码..

我不知道如何让密码匹配他们的ENCRYPT协议..?

1 个答案:

答案 0 :(得分:2)

MySQL的ENCRYPT()函数等同于许多其他语言中的crypt()函数(例如PHPperlpython)。基于实现,对crypt()的给定调用的确切结果可能是不可预测的,因为可以随机选择盐。为了给出可重现的结果(例如,检查密码),将当前密码哈希作为第二个参数传递给函数。

将来,请敦促您的同事使用安全的密码存储方案。这是一个这样的:http://www.openwall.com/phpass/