Автор Ёоня задал вопрос в разделе Другие языки и технологии
Расшифруйте пжлст MD5-хэш. Умоляяяюююю ((( и получил лучший ответ
Ответ от Алексей Цветков[гуру]
Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины. Является улучшенной в плане безопасности версией MD4.[1] Зная MD5, невозможно восстановить входное сообщение, так как одному MD5 могут соответствовать разные сообщения. Используется для проверки подлинности опубликованных сообщений путём сравнения дайджеста сообщения с опубликованным.
Алгоритм MD5
Схема работы алгоритма MD5
На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям.
Ниже приведены 5 шагов алгоритма:
[править]
Шаг 1. Выравнивание потока
Входные данные выравниваются так, чтобы их размер был сравним с 448 по модулю 512 (L’ = 512 × N + 448). Сначала дописывают единичный бит в конец потока, затем необходимое число нулевых бит (выравнивание происходит, даже если длина уже конгруэнтна — сравнима с 448).
[править]
Шаг 2. Добавление длины сообщения
В оставшиеся 64 бита дописывают 64-битное представление длины данных (количество бит в сообщении) до выравнивания. Если длина превосходит 264 − 1, то дописывают только младшие биты. После этого длина потока станет кратной 512. Вычисления будут основываться на представлении этого потока данных в виде массива слов по 512 бит.
[править]
Шаг 3. Инициализация буфера
Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами:
А = 01 23 45 67;
В = 89 AB CD EF;
С = FE DC BA 98;
D = 76 54 32 10.
В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.
Определим ещё функции и константы, которые нам понадобятся для вычислений.
Потребуются 4 функции для четырёх раундов. Введём функции от трёх параметров — слов, результатом также будет слово.
1 раунд .
2 раунд .
3 раунд .
4 раунд .
Определим таблицу констант T[1..64] — 64-элементная таблица данных, построенная следующим образом: T = int(4294967296 * | sin(i) | ), где 4294967296 = 232.[3]
Выровненные данные разбиваются на блоки (слова) по 32 бита, и каждый блок проходит 4 раунда из 16 операторов. Все операторы однотипны и имеют вид: [abcd k s i], определяемый как a = b + ((a + Fun(b,c,d) + X[k] + T) < < < s), где X — блок данных. X[k] = M [n * 16 + k], где k — номер 32-битного слова из n-го 512-битного блока сообщения, и s — циклический сдвиг влево на s бит полученого 32-битного аргумента.
[править]
Шаг 4. Вычисление в цикле
Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый) .
AA = A
BB = B
CC = C
DD = D
Раунд 1
/*[abcd k s i] a = b + ((a + F(b,c,d) + X[k] + T) <<< s). */
[ABCD 0 7 1][DABC 1 12 2][CDAB 2 17 3][BCDA 3 22 4]
[ABCD 4 7 5][DABC 5 12 6][CDAB 6 17 7][BCDA 7 22 8]
[ABCD 8 7 9][DABC 9 12 10][CDAB 10 17 11][BCDA 11 22 12]
[ABCD 12 7 13][DABC 13 12 14][CDAB 14 17 15][BCDA 15 22 16]
Раунд 2
/*[abcd k s i] a = b + ((a + G(b,c,d) + X[k] + T) <<< s). */
[ABCD 1 5 17][DABC 6 9 18][CDAB 11 14 19][BCDA 0 20 20]
[ABCD 5 5 21][DABC 10 9 22][CDAB 15 14 23][BCDA 4 20 24]
[ABCD 9 5 25][DABC 14 9 26][CDAB 3 14 27][BCDA 8 20 28]
[ABCD 13 5 29][DABC 2 9 30][CDAB 7 14 31][BCDA 12 20 32]
Раунд 3
/*[abcd k s i] a = b + ((a + H(b,c,d) + X[k] + T) <<< s). */
[ABCD 5 4 33][DABC 8 11 34][CDAB 11 16 35][BCDA 14 23 36]
[ABCD 1 4 37][DABC 4 11 38][CDAB 7 16 39][BCDA 10 23 40]
[ABCD 13 4 41][DABC 0 11 42][CDAB 3 16 43][BCDA 6 23 44]
[ABCD
А и не поймешь. Это математика.
Вкатце и очень грубо - то это не возможно.
Очень грубый пример:
нельзя по строке
1234567 понять из каких строк она сделана
толи из 1234 и 567
толи из 12, 34 , 56, 7
толи из 1,2,3,45,6,7
но точно можно понять что она сделана не из строки
1,6,2,3,4.
Обратного точного перевода не существует.
есть куча вариантов.
другими словами если ты знаешь последовательность букв и чисел то ты можешь вычислить хэш, но зная хэш, ты не можешь вычислить порядок чисел и букв.
если там длинное слово или даже словосочетание. . -забудь об этом 🙂
Хеш не расшифровывается. Забудь.
Кто я по знаку зодиака, родилась 22 ноября 83-го в 08:05? Еще скорпион или уже стрелец?
точнее:
22.11.83 в 8.05 Солнце в последнем градусе Скорпиона, причем независимо где родилась -
подробнее...
Люди!! ! сколько цифр в ИНН Частного Предпринимателя??? И где его проверить???
Алгоритм проверки ИНН
Проверка 12 значного ИНН (2 контрольные цифры)
Для проверки
подробнее...
Что называют « Папирус Ахмеса », что об это известно?
#yaimg573419#Математический папирус Ахмеса (также известен как папирус Ринда или папирус Райнда) —
подробнее...
Город Правдивых и Город Лжецов
Задавать вопрос "Из какого Вы города? " в условиях данной задачи было совершенно бессмысленно: на
подробнее...
Перезагружается iPhone 5s Просто так. Самостоятельно. Раз по 20-40 в лучшем случае. Что делать?
Как узнать из-за чего iPhone сам перезагружается
В последних версиях операционной системы iOS
подробнее...
Какой динозавр самый маленький, а какой самый большой? С фото пожалуйста
Суперзавр (Supersaurus) – Гигант среди гигантов, Суперзавр был самым крупным сухопутным животным,
подробнее...
C++: И снова передача двумерных массив в функцию.. . каким макаром это сделать?
Объясняю: массив - это ряд одинаковых значений (нет, я не Очевидность 🙂 ). Имя массива в C/C++
подробнее...
Напишите пожалуйста задачи на мышление и смекалку
Кувшинки на пруду
На поверхности пруда плавает одна кувшинка, которая постоянно делится и
подробнее...
Как отремонтировать скрипучие деревянные полы?
В большинстве случаев вы можете справиться с этой проблемой самостоятельно. Скрипят чаще всего
подробнее...
где делаете кузовные ремонты? у офиц дилера или на стороне, где посоветовали друзья?
я у дилера делала только новый ключ. остальное по наводке друзей. вам просто повезло с дилерским
подробнее...
Принципы взаимодействия web-сервера и браузера?!?
Бразуер запрашивает информацию, вэб сервер ее предоставляет.. ща подробнее распишу) ) я тут уже
подробнее...
Кто вылечил аллергический ринит и чем?
ну если он аллергический, то антигистаминными средствами, + избавить от контакта с
подробнее...
В чем отличие индивидуальных прокси от обычных?
Персональные прокси – это идеальный инструмент для обеспечения приватности тех, кто работает в
подробнее...
Задача: на титрование раствора, содержащего 0,4980 г Na2B4O7*10H2O,израсходовано 25,2 мл соляной кислоты. Вычисл. H и Т HCl
Na2B4O7*10H2O + 2HCl=4H3BO3+5H2O+2NaCl
n(буры) =m/Mr=0,4980/381,4=0,001306 моль
подробнее...