[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: "Оригинальный" вопрос про соль.
Страницы: 1, 2, 3, 4, 5
Forever
Читал, что соль лучше делать из случайного набора символов. Но тогда, если
$password = $_POST['password'] ;
$salt = случайная строка из 10 символов ;
$hash_pass = шифрование ( шифрование ( $password ).$salt ) ;
//Далее записываю хэш в бд
то при авторизаци пользователя нужно будет проделать то же самое со введенным им паролем (1), достать хэш из бд (2), сравнить 1 и 2. Проблема в том, что соль генерится случайно, а следовательно, 1 и 2 будут различаться. Вот.

Как же быть?
inpost
Forever
Соль не должна быть случайной.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Forever
Цитата (inpost @ 16.11.2014 - 15:59)
Forever
Соль не должна быть случайной.

Нашел кое-где вот такое:
Цитата
$salt = substr(sha1($login), 10, 20)."\3\1\2\6";
$hashpass = sha1(sha1($pass).$salt);

Вообще принято соль писать в БД (отдельно, или в поле хеша пароля - не важно), но я предпочитаю именно такой вариант, так как если получат исходники, то точно получат БД, а вот обратное - не факт). Кстати использование непечатных знаков 3 1 ... , в случае, если противнику попадет только БД, без исходников - обеспечивает подбирающему много незабываемых часов)

При проверке ввода пароля пользователем повторяете такую же операцию. Если хранить пароли обработанные так или похоже, а авторизацию делать через HTTPS - то в общем довольно надежно получается.

Солить также можно пароли передаваемые от браузера к серверу. Через javascript-функции, но SSL конечно надежнее.
Надежно?

waldicom
Цитата (Forever @ 16.11.2014 - 13:11)
так как если получат исходники, то точно получат БД

Это почему так? Получил я исходники, но как я к базе доступ то получу?

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
I++
Forever

делать sha1(sha1(sha1 хреново.

Плюс sha1 уже не считается надежным.

Вот я такой говнокод юзаю, после продолжительного медетирования на гугл и gpu брутов:

static function PasswHashCreate($passw, $salt)
{
$passwCRC = hash('crc32', $passw);
$roundHash = hash('sha256', $passw.$salt);
$strToBin = pack('H*', $roundHash);

if((int)$passwCRC[0] <= 5)
$roundHash = str_rot13($roundHash);

return hash('whirlpool', $passwCRC.$roundHash.$passw.$strToBin.$salt);
}


Есть и другие способы, ну каждому как по вкусу придется :D Есть и кошерные способы например: http://php.net/manual/ru/function.password-hash.php

Соленье нужно для одного, для защиты от радужных таблиц не более. Остальное для надежности, нужно разные алгоритмы намешивать и чем дольше вычисляется хеш тем лучше. Даже если под алгоритм запилить "сок" или найти дыру или она есть, всеравно долго подбирать.

Намешивание алгоритмов конечно хорошо, но если пароль 123, это всеравно не спасет, трушные челы делают вот такие пароли:
6249LyD5dR3^X82$x9qS$tWxBq%@gT
mg@fv824WSTZBvC9E$S%F$c4$^qHBF
%GZ3V9MV@7Hkce*2F@5W^wYmJbaxXo
24y884%E^up4PkqQQHTmHP53iEm^^t
Pk&9UN&sm8TFz5&Q#L7k$4G56bynY2

И еще всегда 1 пароль такого вида на ресурс, пароль от мыльца, аськи, контакта, однокласников вида vasya1993 не катит)
Forever
Цитата (I++ @ 16.11.2014 - 17:08)
Вот я такой говнокод юзаю


Блин, ни черта не смыслю в шифровании, но вроде тема)).

Сейчас в инете ищу мега-супер реализацию хэширования, даже не зная, на что ориентироваться. Нашел вот статью http://xakep.ru/40336/ и там:
<?
$salt="123!#&%asgfHTA";
$pass="proba";

function my_crypt($pass,$salt)
{
$spec=array('~','!','@','#','$','%','^','&','*','?');
$crypted=md5(md5($salt).md5($pass));
$c_text=md5($pass);
for ($i=0;$i<strlen($crypted);$i++)
{
if (ord($c_text[$i])>=48 and ord($c_text[$i])<=57){
@$temp.=$spec[$c_text[$i]];
} elseif(ord($c_text[$i])>=97 and ord($c_text[$i])<=100){
@$temp.=strtoupper($crypted[$i]);
} else {
@$temp.=$crypted[$i];
}
}

return md5($temp);

}
echo my_crypt($pass,$salt);
?>
Автор пишет, что "Шанс подбора такого пароля снижается практически до нуля". Ты, как сведущий в шифровании, что скажешь?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.