Я искал лучший способ шифрования паролей для использования с моей панелью, я решил продолжить использование BCRYPT, просто из-за стоимости каждого шифрования и того факта, что он вообще считается одним из лучших в настоящее время.Поведение PHP password_hash()
Я использую двухсторонние соли, поэтому уникальная соль, которую каждый пользователь имеет, а затем, очевидно, соль, хранящаяся в моем приложении, я заметил некоторое довольно странное поведение .. и, согласно документации PHP, это обычное поведение?
Во всяком случае, вот код, я использую:
$Crypto = new Crypto;
echo $Crypto->encrypt("123456789abcdefghijklm", "StackOverflow_Is_Awesome!"); // First parameter being the "User Salt", second being the password.
// Above outputs $2y$13$123456789abcdefghijkleepFY8JLvsf2YbnWolqQyO3DIzrCeNIu
И теперь класс Crypto:
<?php
// ASSUMING $this->hashingSalt = HBSNi3y7ruhbVGkhdg83ijdbvghiojkgudL;JP
class Crypto {
private $hashingSalt, $database;
public function __construct($salt)
{
$this->hashingSalt = $salt;
$this->database = new DatabaseFunctions();
}
public function encrypt($salt, $password)
{
$options = array(
'cost' => 13,
'salt' => $salt //22 chars
);
return password_hash($password . $this->hashingSalt, PASSWORD_BCRYPT, $options);
}
}
Итак, мой интерес, почему на Земле эта функция просто добавить соль установить в параметрах начало строки? Это действительно озадачивает ... потому что это не совсем то, что я бы назвал безопасным, скорее поражает объект для меня.
Может ли кто-нибудь посоветовать, попытаться объяснить, что я полностью просматриваю? Благодаря
PHP Doc: http://php.net/manual/en/function.password-hash.php
Здравствуйте, спасибо. Во-первых, спасибо за то, что я просветил меня о разнице между хэшированием и шифрованием, глупой ошибкой. Я перейду на это сейчас! Я прочитал обе ссылки и получил полезную информацию о хэшировании и api, которые я использую, поэтому я хотел бы поблагодарить вас за это. Итак, во всем, что я делаю правильно, просто перец просто не имеет большого значения, правильно? –
Хммм Я вижу, вы пытаетесь установить соль самостоятельно. В большинстве случаев вы не хотите этого делать, потому что это то, что API сделает для вас, и это то, что можно легко «испортить». Если вы хотите узнать, как это работает, вы можете изучить код [в PHP] (https://github.com/ircmaxell/password_compat). – PeeHaa
Спасибо за ваш ответ, я должен использовать эту совместительную библиотеку, поскольку я все еще жду, пока мой хост обновится до 5.5>. Я просмотрел код, нашел его весьма полезным на самом деле, причина, почему мои пароли первоначально не проверялись функцией внутри api, потому что я их хэшировал, прежде чем использовать функцию password_verify(). Спасибо за вашу помощь PeeHaa, похоже, я слишком усложнял то, что на самом деле, ничем не отличается от нормы! Итак, теперь у меня он настроен на то, чтобы делать весь солевой бизнес сам, исключает среднего человека ... спасибо! :) –