De vez en cuando aparece, qué interesante sería si la salida de un hash, o un hash salado fuera igual a la entrada.
Los algoritmos de hash no suelen tener ninguna protección contra esto como parte de los criterios de diseño. De hecho, sería muy fácil agregar un paso más, indicando que si la salida coincide con (parte de) la entrada, alterne el primer bit en la parte correspondiente, evitando así cualquier hallazgo.
Encontrar una entrada / salida coincidente ciertamente me fascinaría, sin embargo, ¿qué hace que no sea tan interesante, es cuando consideras qué representación del hash debería coincidir con la entrada?
La entrada suele ser una serie de bytes de 8 bits, ya sea como texto en varias codificaciones o como binario sin formato.
La salida es un número fijo de bytes sin procesar de 8 bits, representado a menudo como la representación hexadecimal de los valores n * 8 bits como un número.
Seguramente sería una curiosidad si la salida del MD5 de un número decimal (o binario) en formato de cadena (es decir, "12345 ....") sea un número hexadecimal que coincida exactamente con el mismo número, ¿verdad?
Pero, si la salida, interpretada como un gran número en un formato binario, sería exactamente el mismo número (cuando se imprime en el formato decimal), la mayoría de nosotros ni siquiera nos daríamos cuenta de la equivalencia. Pero sería tan interesante teóricamente.
Otro ejemplo, podría ser muy sospechoso, pero ¿te darías cuenta de que esta salida (falsa) de MD5 está en realidad en texto ASCII?
48454c5021496d207472617070656421
Si se publicara como una codificación Base64, sería muy difícil para la mayoría de nosotros ver ese hecho.