MD5 Ha sh Конверсия - PullRequest
       7

MD5 Ha sh Конверсия

1 голос
/ 17 февраля 2020

Основа того, что я пытаюсь понять, заключается в том, как функция MD5 Ha sh может преобразовать строку произвольной длины в такую ​​маленькую длину, но при этом по-прежнему представлять всю строку.

Я понимаю, что он преобразуется в 128-битный выход, который состоит из 16 шестнадцатеричных значений, но, насколько я понимаю, одно значение Hex в моем представлении будет представлять только одно значение. Пример: 0x41 в моей голове с таблицей ASCII по отношению к c ++ было бы 'A'.

Ясно, что мое понимание функции MD5 и того, как вывод может содержать информацию, довольно некорректно, поэтому я ищу объяснение того, как именно в этих гексах может храниться такая большая строка.

Ответы [ 3 ]

2 голосов
/ 17 февраля 2020

Вы путаете га sh функцию с алгоритмом сжатия .

Ха sh обычно является односторонней операцией, которая нет никакого способа "un-ha sh" что-то, как только он хешируется. Это нормально, поскольку это не то, для чего используются хеши.

Ha sh функции обычно используются для представления чего-либо произвольной длины в качестве согласованного значения длины. Например, SHA2-256 представляет произвольное количество двоичных данных в виде 256-битного значения. Он спроектирован так, что даже одно-битное изменение на входе приводит к изменению всего ha sh, что затрудняет, если не невозможно, реверсирование процесса хеширования и «угадывание» ввода.

Это не сказать хэши без fl aws. Известно, что MD5 настолько слаб, что нетрудно построить две двоичные строки, которые имеют sh одинаковое значение, генерируя ha sh столкновение . Хороший алгоритм хеширования делает это маловероятным, но ни один алгоритм хеширования не может сделать его невозможным.

Хеши вещей используются для:

  • Предоставления «дайджеста» чего-либо для обнаружения фальсификация, как в криптографических c сигнатурах загружаемых вами вещей.
  • Распределение данных "случайным образом" по структуре данных, чтобы избежать слипания, как в таблице * sh или словаре.
  • Хранение данных, которые не должны быть легко обратимыми, например пароли. Хороший пароль, ха sh, очень трудно угадать, но его довольно просто проверить с помощью пароля-кандидата.

Существует в основном бесконечное количество бинарных документов, которые могут создать данный MD5 га. sh. Это не относится к алгоритмам сжатия без потерь, поскольку сжатое представление по структуре представляет один и только один исходный документ.

2 голосов
/ 17 февраля 2020

Они не.

Ха sh не «содержит» или «не представляет» всю эту информацию. Они не могли бы.

Они представляют собой переваренную версию, версию с полным удалением информации. Важно то, что они делают это способом, который трудно повернуть вспять, и способом, который производит совершенно другой ха sh, когда вносятся только небольшие изменения в исходные данные (это преднамеренно: хеши обычно используются для быстрой ошибки / обнаружение изменений).

Да, это означает, что несколько входов имеют sh для одного и того же выхода. Столкновения - это то, что вы должны учитывать при работе с хешами.

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

Я понимаю, что она преобразуется в 128-битную вывод, который состоит из 16 шестнадцатеричных значений, но из того, что я понимаю, одно значение Hex в моем уме будет представлять только одно значение. Пример: 0x41, на мой взгляд, с таблицей ASCII по отношению к c ++ было бы 'A'.

Представление MD5 ha sh с использованием шестнадцатеричных цифр - это просто соглашение. Это не означает, что отдельные байты предназначены для интерпретации с использованием таблицы ASCII.

1 голос
/ 17 февраля 2020

Ха sh не содержит ввода.

Вы не можете отменить функцию ha sh, предоставить выход (ха sh) для получения ввода.

Следствием этого является то, что они представляют собой множество входных данных, которые могут привести к одному и тому же хешу; просто невероятно, что для данного га sh кто-то мог бы найти любой (другой) вход, который его генерирует.

Недавно были новости о Алгоритм хеширования SHA1, так как умные люди теперь могут определять входные данные, которые будут генерировать данный га sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...