sha1不能使用密码加密

时间:2015-12-09 05:44:25

标签: php sha password-hash

我使用sha1加密来加密我的密码,但我遇到了问题。对于某些用户,登录无效。

我的代码,(注册时)

// all validation is done here
$password = sha1($_POST['password']);

// inserting data is here
登录时

我的查询是

$email     = $_POST['email'];
$password  = sha1($_POST['password']);

select * from users where email = $email and password = $password and status = 1 and deleted = 0;

用户面临密码问题之一

  

IM $$人

我做错了什么。

请帮帮我。

2 个答案:

答案 0 :(得分:6)

  

我使用sha1加密来加密我的密码,

不。 SHA1不是加密,它是一个哈希函数。 Understanding the difference between encrypting and hashing对于安全实施这一点至关重要:

此外,您撰写查询的方式让我相信它容易受到SQL injection的攻击。<​​/ p>

答案 1 :(得分:0)

问题出在这里,

sha1将$man中的im$$man视为变量,因此它将被评估为null,因为您没有任何值。

这样的事情,

sha1("im$$man");// will echo 17cf5ec2752a9a7f0077c904f60b64f23ba2534d

也等于

sha1("im$");// will echo 17cf5ec2752a9a7f0077c904f60b64f23ba2534d
$man is evaluated to null.

输入的输出相同(虽然输入不同)

要获得预期结果,请避免使用双引号,

sha1('im$$man');// this will give correct output

输出

850caa44549443778fe005f466766d5d6d413692// correct output.

md5() here

的类似问题