Максимальная длина для ввода / вывода MD5 - PullRequest
152 голосов
/ 03 августа 2010

Какова максимальная длина строки, которую можно хэшировать в md5?Или: если у него нет предела и если да, какова будет максимальная длина выходного значения md5?

Ответы [ 7 ]

216 голосов
/ 03 августа 2010

MD5 обрабатывает сообщение произвольной длины в вывод фиксированной длины, состоящий из 128 битов, обычно представляемых в виде последовательности из 32 шестнадцатеричных цифр.

37 голосов
/ 03 августа 2010

Добавление длины

A 64-битпредставление b (длина сообщения до добавления битов заполнения) добавляется к результату предыдущего шага.В маловероятном случае, когда b больше 2 ^ 64, используются только младшие 64 бита b.

  • Хэш всегда равен 128 битам.Если вы закодируете его как шестнадцатеричную строку, вы можете закодировать 4 бита на символ, что дает 32 символа.
  • MD5 не является шифрованием.В общем случае вы не можете «расшифровать» хеш MD5, чтобы получить исходную строку.

Подробнее здесь .

9 голосов
/ 03 августа 2010

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

6 голосов
/ 03 августа 2010

Алгоритм был разработан для поддержки произвольной длины ввода.Т.е. вы можете вычислять хэши больших файлов, таких как ISO DVD ...

Если есть ограничения на ввод, он может исходить из среды, где используется хеш-функция.Допустим, вы хотите вычислить файл, и среда имеет ограничение MAX_FILE.

Но строка вывода всегда будет одинаковой: 32 шестнадцатеричных символа (128 бит)!

4 голосов
/ 03 августа 2010

128-битный MD5-хэш представлен как последовательность из 32 шестнадцатеричных цифр.

3 голосов
/ 03 августа 2010

Возможно, вы захотите использовать SHA-1 вместо MD5 , так как MD5 считается поврежденным.

Подробнее об уязвимостях MD5 вы можете прочитать в этой статье Википедии .

3 голосов
/ 03 августа 2010

Нет ограничений на ввод md5, о котором я знаю. В некоторых реализациях требуется, чтобы весь ввод загружался в память перед передачей его в функцию md5 (т.е. реализация действует на блок памяти, а не на поток), но это не является ограничением самого алгоритма. Выход всегда 128 бит. Обратите внимание, что md5 - это не алгоритм шифрования, а криптографический хеш. Это означает, что вы можете использовать его для проверки целостности фрагмента данных, но вы не можете отменить хеширование. Также обратите внимание, что md5 считается неработающим, поэтому его не следует использовать для каких-либо целей, связанных с безопасностью (все еще можно проверить целостность загружаемых файлов и т. П.).

...