Могу ли я определить алгоритм хеширования на основе начального ключа и выходного хэша? - PullRequest
7 голосов
/ 18 сентября 2009

Если у меня есть и начальный ключ, и хеш, который был создан, есть ли способ определить, какой алгоритм хеширования использовался?

Например:

  • Ключ : выше
  • Хеш : df072c8afcf2385b8d34aab3362020d0
  • Алгоритм :?

Ответы [ 5 ]

13 голосов
/ 18 сентября 2009

Посмотрев на длину, вы можете решить, какие алгоритмы попробовать. MD5 и MD2 создают 16-байтовые дайджесты. SHA-1 производит 20 байтов вывода. И т.д. Затем выполните каждый хэш на входе и посмотрите, соответствует ли он выходу. Если это так, то это ваш алгоритм.

Конечно, если было хешировано больше, чем «ключ», вам также нужно это знать. И в зависимости от приложения хэши часто применяются итеративно. То есть выходные данные хэша снова хэшируются, и эти выходные данные хэшируются & hellip; часто тысячи раз. Так что, если вы заранее знаете, сколько итераций было выполнено, это тоже может помочь.

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

3 голосов
/ 18 сентября 2009

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

Но предположим, я спросил вас вот что:

Если у меня есть вход и выход, могу Определить функцию?

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

// very, very basic illustration
if (unknownFunction(2) == 4) {
    // what does unknownFunction do?
    // return x + 2?
    // or return x * 2?
    // or return Math.Pow(x, 2)?
    // or return Math.Pow(x, 3) - 4?
    // etc.
}
3 голосов
/ 18 сентября 2009
  1. Кажется, что хеш содержит только шестнадцатеричные символы (каждый символ представляет 4 бита)

  2. Общее количество составляет 32 символа -> это хэш длиной 128 бит.

  3. Стандартные алгоритмы хеширования, которые соответствуют этим спецификациям: haval, md2, md4, md5 и palemd128.

  4. Наибольшая вероятность того, что использовался MD5.

  5. md5 («выше»)! = Df072c8afcf2385b8d34aab3362020d0

  6. Наибольшая вероятность того, что было использовано некоторое количество соли.

  7. Самая высокая вероятность остается MD5.

2 голосов
/ 18 сентября 2009

Не соответствует ни одному из распространенных алгоритмов хеширования :

http://www.fileformat.info/tool/hash.htm?text=higher

Возможно, соль была добавлена ​​до хеширования ...

1 голос
/ 18 сентября 2009

Не что иное, как проверка группы, которую вы знаете, и проверка соответствия.

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