[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Криптостойкойст данного хеширования пароля
Страницы: 1, 2, 3, 4
Zzepish
Насколько такой алгоритм криптостойки?
			$genPass = $login.$pass;

for($i = 0 ; $i < mb_strlen($login.$pass) ; $i++ )
if($i%3 === 0)
$genPass = hash('sha512', $login.$genPass.$pass);
elseif($i%2 === 0)
$genPass = hash('sha512', $login.$pass.$genPass);
else
$genPass = hash('sha512', $genPass.$login.$pass.mb_strlen($login.$pass));
inpost
Зайдем издалека. На сколько НЕ УСТОЙЧИВЫЙ стандартный способ хеширования?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Zzepish
inpost
его, теоретически, можно подобрать стандартным перебором, такой способ уже просто перебором подобрать тяжелее, ибо не известно - сколько символов в пароле/
Упор делается на то, что базу могут стырить
inpost
Zzepish
Кого подобрать? Давай попробуем, я тебе дам пароль на 8 символов, а ты попробуешь расшифровать password_hash дефолтный.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Ron
Zzepish, я не думаю, что у тебя получится сделать лучше, чем password_hash. Ты предлагаешь по сути-то элементарнейший алгоритм. Если бы таким способом можно было "обогнать" по надежности вышеозначенную функцию, то по этому поводу написали бы уже миллион статей.

Я тебе больше скажу. Самый обычный MD5 без соли попробуй "расшифруй" для начала. Как-то была такая нужда, надо было узнать пароль, чисто чтобы не менять, потому что много народу его знали и всех оповещать - лениво. Не спрашивать же, ё-моё!!! )))) Угу... Это в статьях всё просто и быстро. На самом деле там припухнешь возиться. Я потыркался-потыркался и забил благополучно. Даже сервисы онлайн есть, которые нихрена не работают на деле. Ну может быть только для пароля 123456, который у них в базе уже есть.

А ты говоришь... Так что мало украсть базу. Еще надо знать как ее "употребить". Это чтоже должен быть за ресурс, чтобы во-первых базу украли, а во-вторых чтобы соответствующие люди с определенным скилом смогли ее отбрутфорсить!?

Ну вот mail.ru недавно забатхёртили. Ты mail.ru? Поэтому забей навсегда. biggrin.gif
Valick
Цитата (Ron @ 14.11.2015 - 20:55)
Самый обычный MD5 без соли попробуй "расшифруй"

вот тут согласен, люди годами набивают базу хешами, но что бы понадобиться таким людям надо минимум быть пентагоном biggrin.gif

_____________
Стимулятор ~yoomoney - 41001303250491
Zzepish
inpost
Ron
Я не спорю, что password_hash лучше! Но я люблю делать свое! Ибо тогда я знаю наверняка, что происходит у меня в коде
Ron
Цитата (Zzepish @ 14.11.2015 - 22:14)
Я не спорю, что password_hash лучше! Но я люблю делать свое! Ибо тогда я знаю наверняка, что происходит у меня в коде

Ну так прочитай алгоритм password_hash, там ничего особенного нет. Там примерно вот что:

private function generateHash($password)
{
$alpabet = array_merge(range('0', '9'), range('A', 'Z'), range('a','z'), array('.','/'));
$salt='';
for($i=0; $i<22; $i++)
{
$salt .= $alpabet[mt_rand(0, 63)];
}
return crypt($password, '$2y$05$' . $salt);
}


Только я сделал послабее немного, а то на моей вшивой VDS-ке ресурсов много тратилось. По дефолту там весовой параметр не 05, а чего-то 10 что ли...

Делал не понта ради, а совместимости для. =))

VeRTak
Цитата (Zzepish @ 14.11.2015 - 22:14)
Я не спорю, что password_hash лучше! Но я люблю делать свое! Ибо тогда я знаю наверняка, что происходит у меня в коде


Зачем тогда вообще писать на php, в топку его. biggrin.gif
VeRTak
Ну не нравится это. погугли про bcrypt. Я как то в Codeignater разбирал его, по моему он вообще так же работает как и password_hash
Zzepish
Ron
благодарю за разъяснение) единственное - я не понимаю, как можно работать с рандомом в хеше)
Wind
если я буду делать сайты на асме, или делать комп с нуля - я охамею.
Wind
Ты не понял) мне нравиться сам процесс) тупо использовать чужое (не вникая в ньюансы) сделает тебя идиотом. Компонентным программистом, что не гуд
Ron
Цитата (Zzepish @ 15.11.2015 - 01:13)
благодарю за разъяснение) единственное - я не понимаю, как можно работать с рандомом в хеше)

Так это ж соль! ) Она просто дописывается к хэшу вначале. Вот например, хэш сделанный с помощью этого метода:
$2y$05$jAH.ylwazCPB7Q/dAUHoHubanEC07FUBNlbPUXci6KH.SKflTLQMa

Тут $2y$ указывает на алгоритм. В данном случае blowfish. Далее идет вес. Потом соль jAH.ylwazCPB7Q/dAUHoHu ну а дальше сам хэш.

Метод который "сравнит" пароли еще проще, чем генератор.
private function checkHash($hash, $password)
{
$salt = substr($hash, 0, 29);
if(crypt($password, $salt) == $hash)
{
return true;
}
return false;
}


Соль не является секретом. Это всего лишь средство, благодаря которому невозможно построить универсальную радужную таблицу под все хэши сразу. Придется строить для каждого - свою. Что само по себе УЖЕ огромная боль. Даже если используется пресловутый MD5.
Zzepish
Ron
ааааааа. Вон оно что! Спасибо
SDV
Цитата (Zzepish @ 14.11.2015 - 22:14)
Я не спорю, что password_hash лучше! Но я люблю делать свое! Ибо тогда я знаю наверняка, что происходит у меня в коде

Ну тогда читай теорию, книжки по криптографии. Там описаны по какому принципу работают такие алгоритмы. Ну и потом собственно ты свой уже с нуля написать сможешь.
Zzepish
SDV
Я об этом думал. С преподом по ьезопасности беседовал. Там даже не логики больше, а математики! Так-что придеться свой мозг под нее точить)
Быстрый ответ:

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