sha1 在密码加密中不起作用

sha1 is not working in password encryption

我正在使用 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$$man

我是不是做错了什么。

请帮助我。

嗯,问题就在这里,

sha1 将 im$$man 中的 $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.

类似的问题

I am using sha1 encryption for encrypting my password,

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

此外,您编写查询的方式让我相信它容易受到 SQL injection