2015-06-12 4 views
0

Я использую этот кусок кода для шифрования моего пароля: -расшифровывает base64 закодировать строку с солью

public function hashSSHA($password) { 
    $salt = sha1(rand()); 
    $salt = substr($salt, 0, 10); 
    $encrypted = base64_encode(sha1($password . $salt, true) . $salt); 
    $hash = array("salt" => $salt, "encrypted" => $encrypted); 
    return $hash; 
} 

Теперь я понимаю, что мне нужен обратный процесс его. Так что я не пытался с этим

base64_decode(sha1(str_replace($password, $salt), true) . $salt); 

и это

base64_decode(str_replace(sha1(str_replace($password, $salt), true) , $salt)); 

, чтобы получить мой расшифрованный пароль, но ни один из работающих.

+4

Просто, не надо. Переосмысление хэширования пароля опасно и бессмысленно. Используйте [API паролей PHP] (http://www.php.net/password). –

+0

вы не «шифруете», вы хешируете. есть большая разница между ними: криптование является обратимым, хеширование - нет. –

+0

В будущем взгляните на [этот ответ о сохранении паролей в PHP] (http://stackoverflow.com/a/401684/1122242). – moveaway00

ответ

1

Не храните зашифрованные пароли, не храните хэши. Просто прошу о неприятностях. PHP docs есть приличный учебник по этому вопросу.

Редактировать после комментариев: забыли пароль, вам нужно только запросить их электронную почту. Отправьте им электронное письмо со ссылкой, которая включает в себя случайное значение в get, которое вы также храните в таблице базы данных. Подтвердите соответствие значений и позвольте им изменить свой пароль. Впоследствии измените значение в базе данных, чтобы аннулировать ссылку, которую вы им отправили.

+0

ОП использует хеши, а не шифрование. Кроме того, на самом деле это не ответ, но ссылка полезна, возможно, вместо этого добавьте ее в комментарии. –

+0

Я бы оставил комментарий, просто по какой-то причине требуется 50 репутации. – twentylemon

+1

Когда возникает вопрос: «Как я стреляю себе в ногу», правильный ответ: «Не стреляй в ногу» – moveaway00

Смежные вопросы