2010-08-03 42 views
120

¿Cuál es la longitud máxima de la cadena que puede tener hash md5? O bien: si no tiene límite, y en caso afirmativo, ¿cuál será la longitud máxima del valor de salida de md5?Longitud máxima para entrada/salida MD5

+14

MD5 es __not__ un algoritmo de encriptación. Es una función hash.Consulte esta pregunta para conocer la diferencia entre las funciones de cifrado y hash: http://stackoverflow.com/questions/3080976/difference-between-encryption-and-hashing – Henri

+2

Siga la wiki: http://en.wikipedia.org/wiki/ MD5 – Frank

+2

@Henri, ¿quién mencionó el cifrado? No puedo ver ninguna referencia de encriptación en esta publicación. Supongo que OP lo sabe. –

Respuesta

177

MD5 procesa un mensaje de longitud arbitraria en una salida de longitud fija de 128 bits, típicamente representada como una secuencia de 32 dígitos hexadecimales.

+57

Nota para usted: longitud de hash MD5 = '128 bits' =' 16 bytes' = '32 dígitos hexadecimales' – checksum

+2

[A edición normal] 32 dígitos hexadecimales y la cadena contiene solo palabras de 'az' y dígitos de '0-9 ' – v1h5

+1

Noté un pequeño error en comentarios anteriores. El texto debe ser como se citó :) "32 dígitos hexadecimales y la cadena contiene solo ** letras ** de 'az' y dígitos de '0-9'" –

6

El algoritmo ha sido diseñado para admitir una longitud de entrada arbitraria. Es decir, puede calcular hash de archivos grandes como ISO de un DVD ...

Si hay una limitación para la entrada, podría provenir del entorno en el que se utiliza la función de almohadilla. Supongamos que desea calcular un archivo y el entorno tiene un límite MAX_FILE.

Pero la cadena de salida será siempre la misma: 32 caracteres hexadecimales (128 bits)!

4

Un hash MD5 de 128 bits se representa como una secuencia de 32 dígitos hexadecimales.

8

Puede tener cualquier longitud, pero por supuesto, puede haber un problema de memoria en la computadora si la entrada de cadena es demasiado larga. La salida es siempre de 32 caracteres.

+4

Si la entrada de cadena es demasiado larga, no existiría en el sistema en primer lugar, a menos que esté en un archivo, en cuyo caso puede pasar bloques a la función de resumen a medida que se leen, en otras palabras, solo necesita tener bytes de 'bloque' de la entrada disponibles a la vez. –

3

No hay límite para la entrada de md5 que conozco. Algunas implementaciones requieren que la entrada completa se cargue en la memoria antes de pasarla a la función md5 (es decir, la implementación actúa en un bloque de memoria, no en una secuencia), pero esto no es una limitación del algoritmo en sí. La salida es siempre de 128 bits. Tenga en cuenta que md5 no es un algoritmo de cifrado, sino un hash criptográfico. Esto significa que puede usarlo para verificar la integridad de un fragmento de datos, pero no puede revertir el hash. También tenga en cuenta que md5 se considera roto, por lo que no debe usarlo para nada relacionado con la seguridad (aún está bien verificar la integridad de los archivos descargados y tal).

34

Anexar Longitud

Una representación de 64 bits de b (la longitud del mensaje antes de que los bits de relleno fueron añadidos) se adjunta al resultado de la paso anterior. En el caso improbable de que b sea mayor que 2^64, entonces solo se usan los 64 bits de bajo orden b.

  • El hash es siempre 128 bits. Si lo codifica como una cadena hexadecimal, puede codificar 4 bits por carácter, dando 32 caracteres.
  • MD5 no es cifrado. En general, no se puede "descifrar" un hash MD5 para obtener la cadena original.

Ver más here.

+0

* La longitud del mensaje es ilimitada *, ¿Qué quiere decir * mensaje *? ¿Es entrada? Mi pregunta es 'MD5 (" ¿cuántos caracteres exactamente? ");' – Shafizadeh

+0

@Shafizadeh Su entrada puede ser tan larga como sea posible en su lenguaje de programación actual, en Java esto sería (2^31) -1 caracteres en una cadena. Y sí, el "mensaje" es la entrada. – RicoBrassers

+0

@Shafizadeh ... o desde un archivo, la entrada podría ser tan grande como el almacenamiento disponible. – ToolmakerSteve

4

Es posible que desee utilizar SHA-1 en lugar de MD5, ya que MD5 se considera roto.

Puede leer más sobre las vulnerabilidades de MD5 en this Wikipedia article.

+4

esto no es más que un rumor. MD5 es lo suficientemente bueno para la mayoría de las tareas de desarrollo web habituales –

+9

Su creador, así como Bruce Schneier y Homeland Security están de acuerdo en que está roto ... ¿Cuántos más 'rumores que se extienden'? ¿Necesitas convencerte de que en realidad se ha roto? ¿durante algún tiempo? El hecho es que es arbitrariamente fácil encontrar una entrada que genere un hash específico. Por supuesto, puede mitigar este riesgo salando sus entradas, usando sales suficientemente grandes. En una nota al margen: SHA-1 se considera igual de roto. Si aconseja a las personas actualizarse, infórmenos sobre la actualización a SHA-2, por favor. – kander

+2

@kander oh, necesito muy poco. Un ejemplo. Dado un hash, ¿traerás una cadena fuente? ¿No es un enlace a un gran artículo, no la opinión de alguien, sino solo una cadena fuente? –