Sha1 не работает в шифровании пароля

Я использую шифрование 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;

один из пользователей столкнулся с проблемой с паролем,

им $$ человек

Я делаю что-то неправильно.

Помогите мне, пожалуйста.

3

Решение

Ну, проблема здесь,

Sha1 лечит $man в im$$man как переменная, поэтому он будет оцениваться как нулевой, так как у вас нет никакого значения для этого.

что-то вроде этого,

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 () здесь

0

Другие решения

Я использую шифрование sha1 для шифрования моего пароля,

Нету. SHA1 — это не шифрование, это хеш-функция. Понимание разницы между шифрованием и хэшированием имеет решающее значение для реализации этого безопасно:

Кроме того, то, как вы написали свой запрос, заставляет меня полагать, что оно уязвимо для SQL-инъекция.

6

По вопросам рекламы [email protected]