php - 使用 PHP MYSQL 加密

标签 php mysql security encryption web

当用户在我的网站上注册时,我使用加密功能(数据库是 mysql)将他们的密码像这样插入到数据库中;

$qry = "INSERT INTO members(firstname, lastname, email, login, passwd) VALUES ('$fname','$lname','$email', '$login',ENCRYPT('$password'))";

当我在他们登录时匹配它时,我使用了这个查询,但它似乎不起作用;

$qry="SELECT * FROM members WHERE login='$login' AND passwd = ENCRYPT('$password')";

为什么这不起作用?

最佳答案

根据 encrypt文档

加密(str[,salt])

使用 Unix crypt() 系统调用加密 str 并返回二进制字符串。 salt 参数必须是至少包含两个字符的字符串,否则结果将为 NULL。如果没有给出 salt 参数,则使用随机值。

然后,你会得到相同的结果,因为每次你请求加密函数时,都会使用一个新的盐字符串,可能你需要在尝试之前设置盐。例如,当我尝试使用盐时,我得到了我一直在寻找的结果

SELECT ENCRYPT(  'hello',  'stringSalt' ) =  'stOIgrUfQZeZ.'

但是,如果我不使用盐字符串

select encrypt('hello');

1st result: qn8VHq6xLWgQc
2nd result: 6odpFDddcEdoA

两者的结果完全不同

最后,如果 crypt 函数不在您的操作系统上,则结果将为 null

(感谢@Fred ii 的注释)

关于php - 使用 PHP MYSQL 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19578176/

相关文章:

security - 蓝牙 key 如何防止 MITM 攻击

php - 尽管使用 PDO::PARAM_INT 参数,MySQL/PDO::quote() 还是在整数周围加上引号

php - 在数据库中获取的数据旁边对表进行编号

php - 编辑帖子时出现 Wordpress 字符编码问题

php - Laravel 4 旧的 mysql 凭据似乎在某处兑现?

sql - 使用存储过程访问数据可以提供哪些安全优势?

php - 获取带IP的网站头

php - Laravel Eloquent 的 Mysql 索引

php - VI编辑器_将文件夹从Windows移动到Web服务器

c# - 协助审核由 WCF netTcpBinding 与 clientCredentialType 证书导致的失败 4625 消息