No. Dada alguna salida x , cualquier entrada m tal que h ( m ) = x se llama una preimagen . Aunque hay muchas preimágenes posibles, no es factible encontrar cualquiera de ellas, es decir, si la función hash es criptográficamente fuerte.
Las tres propiedades clásicas de las funciones hash criptográficas son:
- Resistencia a las imágenes previas: dado x , no es posible encontrar ningún valor m tal que h ( m ) = x .
- Resistencia a las segundas preimágenes: dado m , no es posible encontrar ningún valor m ' tal que m m ' y h ( m' ) = h ( m ).
- Resistencia a las colisiones: no es posible encontrar m y m ' de modo que m ≠ m' y h ( m ') = h ( m ).
En otras palabras:
- Si te doy una salida de hash, no puedes encontrar una entrada que coincida, no solo la que usé en primer lugar, sino que tampoco puedes encontrar ninguna otra.
- Si te doy una salida de hash y una entrada coincidente, no puedes encontrar otra entrada distinta que produzca la misma salida.
- Aunque te permita elegir los mensajes que desees, sin ninguna restricción, no puedes encontrar dos entradas distintas que produzcan la misma salida.
Por supuesto, todas estas resistencias son hasta cierto esfuerzo computacional (muy alto). Por ejemplo, encontrar una preimagen se puede hacer con un método llamado "suerte", es decir, probar entradas aleatorias hasta que se encuentre una coincidencia. Si la función hash ofrece una salida de 256 bits, entonces la suerte encontrará una entrada coincidente en un promedio de 2 intentos 256 , que está totalmente fuera del alcance de la tecnología existente y futura (por un muy muy largo margen). Se dice que una función es "criptográficamente fuerte" si el tamaño de salida de la función hash es tal que la suerte no es práctica, y no hay un método mejor conocido.