|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.10.2016, 09:49 | #1 |
Форумчанин
Регистрация: 26.02.2011
Сообщений: 301
|
Соль
Вопрос по соли
Вот смотрите. Если бы был просто md5 я брал бы хэш от введенной строки и записывал его в таблицу. Далее просто введя строчку, брал от нее хэш и искал совпадение в таблице. Но соль?? Соль динамическая, то есть длина разная для каждой строки в таблице, скажем от 10 до 20 символов. Собственно вопрос по самой логике(алгоритму). Код не нужен. Подскажите просто правильно ли мыслю? Есть таблица логин:пароль:соль При записи я беру нашу введенную строку, обычную , не хэш, скажем "123"+соль, которая была случайно сгенерирована, то есть на вход функции для взятия хэша я дам что то в виде "123J9d!0F" вот такой строки и возьму от нее уже хэш и запишу в таблицу. Теперь в таблице у меня будет скажем admin;тут_хэш_ранее_полученный_;J9d !0F Теперь при авторизации, я беру наш логин, ищу его в таблице, далее беру у этого логина, в его строке, соль нашу "J9d!0F". К нашей ранее введеной строке я прибавляю соль "J9d!0F" и беру от полученной в результате сложения строки - хэш и сравниваю его в строке с нашим логином что он совпадает или нет. Все )) Верно думаю или это неверно? |
20.10.2016, 09:55 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
да, по моему мнению, вы думаете верно.
А что Вас смущает? |
20.10.2016, 10:21 | #3 |
Форумчанин
Регистрация: 26.02.2011
Сообщений: 301
|
получается соль храниться в открытом виде, верно же?
|
20.10.2016, 10:43 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Во-первых, она в открытом виде только для Вас. внешний пользователь доступа к вашей БД не имеет. Во-вторых, главная функция соли - это борьба с "радужными" таблицами. если не слышали, что это, кратенько поясню. хеш - это односторонняя функция, из пароля 1234 получить md5 81dc9bdb52d04dc20036dbd8313ed055 легко, но получить из этого хеша исходную строку невозможно. НО! Хитрые люди (а ля кулхацкеры) взяли и составили большую-пребольшую табличку для всех возможных сочетаний символов определённой (достаточно небольшой) длины. и вот в этой таблице есть хеш 81dc9bdb52d04dc20036dbd8313ed055 и по нему можно легко получить исходную строку 1234 Но, если вы к строке 1234 (которая злоумышленнику неизвестна) добавите известную ему соль (ну, допустим, ту же J9d!0F), то получите исходную строку длиной 10 (длина пароля + длина соли) и хэш от этой строки: fd3cd507d4cade1ac9f2c16a11ff1bd4 а вот вероятность того, что это хэш найдётся в радужной таблице намного меньше (чем случайнее и длинее соль, тем вероятность ближе к нулю) Вот для этого соль и нужна. |
|
20.10.2016, 11:00 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Найдется где? Придется ж новую таблицу генерировать для каждой соли
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
20.10.2016, 11:34 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
не надо.
Радужная таблица уже сгенерирована для всех вариантов символов, скажем, длиной 8 символов. если Вы к паролю длиной 4 прибавите соль длиной 4, то получите строку длиной 8, которая априори ЕСТЬ в исходной радужной таблице. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где купить соль большими кусками | HellMercenariess | Свободное общение | 20 | 15.11.2009 16:40 |