Рейтинг:0

Как работает blueimp JavaScript-MD5?

флаг mv

Я добился некоторого прогресса в проблеме лавины MD5, https://github.com/221294583/crc32 Говорят, что CRC32 реализует лавину через рекурсивное XOR полиномов и исходных значений одновременно. Я думаю, что MD5 такой же, но я не могу понять код MD5. Можете ли вы помочь мне объяснить этот код. https://github.com/blueimp/JavaScript-MD5 , это большой массив кодов, как в моей ссылке. Я не разработчик проекта. Я использую утилиту MD5 для своего проекта, и, возможно, JavaScript также просто вызывает утилиту. CRC32 — это другой метод.

DannyNiu avatar
флаг vu
Примечание: MD5 не обеспечивает защиту целостности криптографического уровня, и его следует избегать.Даже если вы готовы пожертвовать безопасностью ради производительности, BLAKE2s-128 — лучший выбор с точки зрения эффективности, если только у вас нет необходимости использовать существующее оборудование.
Рейтинг:1
флаг vu

MD5 работает принципиально иначе, чем CRC.

Я не знаком с алгоритмами CRC, за исключением того, что знаю, что они обеспечивают базовую защиту целостности с высокой пропускной способностью.

MD5 (наряду с другими в семействе криптографических хеш-функций Меркла-Даамгарда, такими как SHA-1, SHA-256 и т. д.) имеет примерно 4 уровня:

Конструкция Меркле-Даамгарда: состоит из

  • MD-совместимое заполнение сообщений - для того, чтобы сообщения разной длины приводили к разным последовательностям блоков сообщений. Различные сообщения одинаковой длины не являются основной проблемой для заполнения, совместимого с MD.

  • Серия итераций функции сжатия $С(ч,м)$, куда $ч$ — дайджест предыдущей итерации функции сжатия (или вектор инициализации, если это начальная итерация); и $м$ блок сообщений для текущей итерации.

Построение функции сжатия из блочных шифров.

Конструкция Дэвиса-Мейерса используется в семействах MD5, SHA-1 и SHA-2. Он шифрует дайджест с помощью блока сообщений в качестве ключа, а затем добавляет или удаляет дайджест в новый выходной блок, чтобы выполнить функцию сжатия. в одну сторону.

Построение блочного шифра.

Есть 2 основные парадигмы - а) Сеть замещения-перестановки (SPN), б) Сеть Фейстеля. Семейство MD5, SHA-1 и SHA-2 использует последний вариант.

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

Построение круглой функции.

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

  • Парадигма ARX (арифметическое сложение, поворот/сдвиг и операции xor) является популярным выбором.
  • Бинарный многочлен — это другое.
DannyNiu avatar
флаг vu
Я почти уверен, что видел подобные ответы раньше. Может ли кто-нибудь дать ссылку на него, пожалуйста?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.