Ответы пользователя по тегу Хеширование
  • Как сравнить два списка с помощью хеш-кода?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Значит, если будет стоять задача сравнить два списка (одинаковы ли они), то достаточно вычислить хеш двух списков? Или просто так совпало, что их хеши одинаковые?

    Если хеши получились разными то со 100% уверенностью можно сказать, что списки разные. Если хеши получились одинаковыми, то с высокой (в зависимости от качества хеширующей функции, но однозначно не 100%) степенью уверенности можно сказать, что списки одинаковые. 100% уверенность в равенстве списков с одинаковыми хешами даёт только поэлементное сравнение списков.
    Ответ написан
    1 комментарий
  • Насколько безопасна подпись основанная на хешировании данных с солью?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Насколько безопасен такой алгоритм

    Такой алгоритм небезопасен.

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

    Во-вторых если "сложная случайная строка" общая для всех пользователей и используется так как ты описал, она просто становится частью пароля хешируемого без соли. Аутентифицированный пользователь получивший хеш для своего пароля может подобрать "сложную случайную строку" с помощью радужных таблиц.
    Ответ написан
  • Preimage - атака нахождения прообраза. Теория + практика. Пофантазируем?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Сколько понадобится компов объединённых вместе, чтобы решить эту задачу (мою и автора вопроса по ссылке)?

    Решение этой задачи перебором идеально распараллеливается, даже в уме. Поэтому если взять N компов, решение найдётся в N раз быстрее.

    На своём ноуте с картой NVIDIA GTX 1050 Ti мне бы понадобилось около 150 лет... :)

    Соответственно, 150 таких компов справятся за год, а 1314000 таких компов -- за час.
    Ответ написан
    3 комментария
  • Сколько будет подбираться хэш и сколько ресурсов для этого понадобиться?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Ты спрашиваешь о preimage-атаке. Для md5 известно о существовании атаки сложностью в 2123.4. Если перебирать маски в лоб, то 29 десятичных цифр дают 97 битов, т.е. сложность прямого подбора 297. Можно сказать, что для такого использования md5 всё ещё хорош. Исходя из оценки "NVIDIA GeForce 8800 Ultra can calculate more than 200 million hashes per second" получаем, что прямой подбор маски займёт порядка 297 / 108 = 1.6 * 1021 секунд работы одной такой карты. Т.е. 5 * 1013 лет.
    Ответ написан
    1 комментарий
  • Почему не совпадают результаты sha1?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    почему так?

    Подозреваю, что потому что результат работы функции SHA1 -- бинарный а не строковый. В своей программе ты вторым шагом хешируешь байты результата, а на сайт вставляешь их строковое шестнадцатеричное представление.
    Ответ написан
  • Как из суммы md5 получить содержимое обратно?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    шифруется не более 9 цифр (артикул)

    Хешируется. Можно тупо решить в лоб, 9 цифр -- это миллиард вариантов. Можно их все посчитать, отсортировать и положить в файл, в текстовом виде займёт ~50 гигов, поиск будет почти мгновенный.
    Ответ написан
    Комментировать
  • Возможно ли дехеширование при определенных условиях?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    если точно известно, что захеширован был хеш h1 и из него получили хеш h2, количество символов в начале равно количеству символов в конце, более того набор символов в первом выражении равен набору символов во втором выражении, можно ли, имея на руках h2, вернуть значение хеша h1?

    Можно, если хеш биективный. Но для хорошего алгоритма хеширования нет возможности сделать это существенно быстрее перебора всех возможных значений h1.
    Ответ написан
    Комментировать
  • Какое влияние полинома на конечный результат в CRC32?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    1. Как влияет полином на CRC?

    CRC -- это остаток от деления входных данных на полином.

    2. Существует ли возможность скорректировать алгоритм или полином так что бы результаты crc были определенном диапазоне? например от 0x0 - 0xafffffff.

    Не уверен, что можно подкорректировать алгоритм деления так, чтобы он остался алгоритмом деления, но давал другой результат. Но можно уменьшить полином.

    3. Скорректируйте алгоритм так что бы результаты были всегда внутри диапазона 0x0-0xeffffffff

    Это задание а не вопрос. Делай свою домашку сам.
    Ответ написан
    3 комментария
  • Как создать хэш таблицу с помощью си?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Вопрос первый: я правильно понимаю, что эту структуру данных где будут хранится мои слова можно назвать хэш таблицей, а функцию, определяющую к какой ячейке массива отнести очередное слово - хэш-функцией?

    Да.

    По крупицам собираю информацию в гугле относительно динамических списков и массивов структур, но картина пока не складывается :(


    38000000 результатов, нифига себе "по крупицам".

    Подскажите как это реализовать и\или где можно почитать о создании таких вот вещей?

    Тут уже читал?
    Ответ написан
  • Возможные уязвимости в представленном алгоритме обмена между ключом и замком через радиоканал?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    1. словом salt обозначают открытую случайную последовательность, нужную для борьбы с rainbow tables. Если материал секретный, то это либо ключ, либо производная от него.

    2. K2 и SALT2 в вашем алгоритме не нужны совсем, поскольку никак не используются второй стороной. По сути вы отправляете с замка случайный H2 и проверяете, что ключ знает SALT3.

    3. В описании нигде не видно, как ключ и замок идентифицируют сообщения как часть одного процесса аутентификации. Ну т.е. как замок получив что-то (предположительно H3) ассоциирует это с ранее отосланным H2?
    Ответ написан
  • Почему hash_password() каждый раз генерирует разное значение?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если я запишу в базу такой сгенерированный пароль, а потом буду сравнивать введенное значения пользователя, зашифрованное этой функцией со значением в базе, то они будут разные, соответственно пользователь никогда не сможет войти на сайт.

    Не надо шифровать заново и сравнивать, используйте password_verify.
    Ответ написан
    Комментировать
  • Как вам мой алгоритм хэширования?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Внутреннее состояние в unsigned int и char *data -- это ошибки: char бывает знаковым и беззнаковым, а int может иметь разную ширину в зависимости от системы.
    Дальше, вы замешиваете входные данные в хэш побайтово, это дыра для дифференциального криптоанализа.
    Дальше, состояние вы тащите в интах, а за время хеширования одного байта у вас состояние не прокручивается полностью (ваши сдвиги, максимум на 3, за цикл хеширования сдвинут состояние максимум на 24 бита из 32). Мало того, что это неряшливо, это также значит, что старшие и младшие части слов хеша будут иметь разную структуру.
    Короче, даже без углубления в анализ видно, что алгоритм непродуман и слаб.

    Правда работает медленно (относительно sha* например).

    При том, что даже sha1 делает больше раундов, чем ваше произведение.

    если не будет совпадений, то возможно он нормальный

    К тому же вам, очевидно, не хватает знаний о том, как оценивается качество криптографических хеш-алгоритмов.
    Ответ написан
    6 комментариев
  • Как возможно захешировать любой файл, если количество комбинаций самой хеш-суммы ограничено?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    количество комбинаций хеш-суммы для каждого алгоритма огромное, но ведь файлов (или даже простых строк) еще больше

    Возможных файлов больше. Реально использованных -- гораздо меньше. Т.е. если мы возьмём 109 компьютеров перебирающих 109 файлов в секунду, то чтобы перебрать все возможные значения sha1 потребуется 2160/1018 = 1030 секунд, т.е. 4 * 1022 лет, что существенно больше возраста Вселенной.
    Ответ написан
    Комментировать