Considero que google es mejor sitio que yahoo, debido a que el rango de tràfico se reduce en las búsquedas porque las realiza de una forma más veloz, las personas solo buscamos información importante y una vez obtenida estamos realizando la información que realmente nos interesa, se anuncian más personas en el sitio de google y contiene mucha más información de la que contiene yahoo.
El tiempo en el sitio se reduce también porque se acelera el motor de información de la base de datos y se generan búsquedas más específicas con palabras clave.
En criptografía, MD5 (abreviatura de Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5) es un algoritmo de reducción criptográfico de 128 bits ampliamente usado.
Historia
MD5 es uno de los algoritmos de reducción criptográficos diseñados por el profesor Ronald Rivest del MIT (Massachusetts Institute of Technology, Instituto Tecnológico de Massachusetts). Fue desarrollado en 1991 como reemplazo del algoritmo MD4 después de que Hans Dobbertin descubriese su debilidad.
A pesar de su amplia difusión actual, la sucesión de problemas de seguridad detectados desde que, en 1996, Hans Dobbertin anunciase una colisión de hash plantea una serie de dudas acerca de su uso futuro.
Codificación
La codificación del MD5 de 128 bits es representada típicamente como un número de 32 dígitos hexadecimal. El siguiente código de 28 bytes ASCII será tratado con MD5 y veremos su correspondiente hash de salida:
MD5("Esto sí es una prueba de MD5") = e99008846853ff3b725c27315e469fbc
Un simple cambio en el mensaje nos da un cambio total en la codificación hash, en este caso cambiamos dos letras, el «sí» por un «no».
MD5("Esto no es una prueba de MD5") = dd21d99a468f3bb52a136ef5beef5034
Otro ejemplo sería la codificación de un campo vacío:
MD5("") = d41d8cd98f00b204e9800998ecf8427e
Algoritmo
Terminologías y notaciones
En este documento "palabra" es una entidad de 32 bits y byte es una entidad de 8 bits. Una secuencia de bits puede ser interpretada de manera natural como una secuencia de bytes, donde cada grupo consecutivo de ocho bits se interpreta como un byte con el bit más significativo al principio. Similarmente, una secuencia de bytes puede ser interpretada como una secuencia de 32 bits (palabra), donde cada grupo consecutivo de cuatro bytes se interpreta como una palabra en la que el byte menos significativo está al principio.
El símbolo "+" significa suma de palabras.
X <<<>
not(x) se entiende como el complemento de x
Descripción del algoritmo md5
Empezamos suponiendo que tenemos un mensaje de 'b' bits de entrada, y que nos gustaría encontrar su resumen. Aquí 'b' es un valor arbitrario entero no negativo, pero puede ser cero, no tiene por qué ser múltiplo de ocho, y puede ser muy largo. Imaginemos los bits del mensaje escritos así:
m0 m1 ... m{b-1}
Los siguientes cinco pasos son efectuados para calcular el resumen del mensaje.
WHIRLPOOL
WHIRLPOOL es una función de hash diseñada por Vincent Rijmen y Paulo S. L. M. Barreto. El hash ha sido recomendado por el proyecto NESSIE y ha sido adoptado por la Organización Internacional de Estandarización (ISO) y la Comisión Electrotécnica Internacional (IEC) como parte del estándar internacional ISO/IEC 10118-3.
WHIRLPOOL fue desarrollado después del algoritmo de cifrado por bloques Square. WHIRLPOOL es una construcción Miyaguchi-Preneel basada en una modificación del Advanced Encryption Standard. Dado un mensaje de un tamaño menor de 2256 bits, devuelve un hash de 512 bits.
Los autores han declarado que WHIRLPOOL no está patentado (ni lo estará). Puede ser usado libremente para cualquier propósito y las implementaciones de referencia son de dominio público.
El nombre del algoritmo es en referencia a la Galaxia Whirlpool en la constelación Canes Venaciti.
Hashes WHIRLPOOL
El algoritmo WHIRLPOOL ha tenido dos revisiones desde la especificación original (año 2000). En la primera revisión, en el 2001, la S-Box generada de manera aleatoria con buenas propiedades criptográficas se cambió a una cuyas propiedades fueron mejoradas y era más sencilla de implementar en hardware. En la segunda revisión, en 2003, la matriz de difusión fue cambiada.
En los siguientes ejemplos, versión original de WHIRLPOOL será llamada WHIRLPOOL-0 y la primera revisión WHIRLPOOL-1.
Los hashes de 512 bits (64 bytes) se representan como 128 caracteres hexadecimales. En estos ejemplos se muestran entradas de 43 bytes ASCII y su correspondiente hash de WHIRLPOOL:
WHIRLPOOL-0("The quick brown fox jumps over the lazy dog") =
Incluso un pequeño cambio hará que (con una probabilidad de 1-10-154) el resultado de la función sea completamente distinto, por ejemplo, cambiando d por c:
WHIRLPOOL-0("The quick brown fox jumps over the lazy cog") =