Я пишу веб-сайт для личного пользования (надеюсь, но не думаю, что кто-нибудь когда-нибудь придет) и разработал следующий алгоритм:
function encryptPassword($username, $password) {
$username=md5($username);
$password=md5($password);
$newpass = substr($username, 0, 5) . $password . substr($username, 5 );
$newpass = md5($newpass);
return $newpass;
}
Поскольку это все еще своего рода система «знай пароль, и ты в системе» (как обычно, хотя), я думаю, что было бы лучше спрятать пароль в базе данных.
Ранее я использовал простой алгоритм MD5x1 (в основном: md5 (проход) и готово), но тогда люди, имеющие доступ к базе данных, легко могли бы отменить ее хеширование. Таким образом, я не думаю, что вы сможете отменить эту вещь.
Это не.
Решения вышеперечисленного:
Ой, подождите, в PHP уже есть целая библиотека, которая делает это, кроме путь лучше. Это password_hash()
, и если вы используете версию PHP ранее, чем 5.5, когда она была реализована, есть password_compat
который бэкпортирует его еще в 5.3.7, и если тот все еще не работает, вам действительно нужно обновить вашу установку PHP.
Наконец, если у вас нет образования в криптографии на уровне колледжа, вы никогда не должны пытаться «свернуть свои» схемы хеширования или шифрования. В 99% случаев вы получите гораздо менее безопасную систему, чем если бы вы использовали что-то стандартное для отрасли.
Других решений пока нет …