Lo que Math te ha dicho es correcto si asumes singularidad e igualdad. Por ejemplo, de a = b + c, se sigue que b = a - c. ¿Porqué es eso? La adición tiene una función inversa que vuelve a asignar un par de enteros a un entero único. Si piensa en + como una función con notación de infijo y dos argumentos. Piense en - como el inverso de esa función. Entonces obtendrías: a = + (b, c), y por lo tanto b = - (a, c).
De la misma manera, se podría pensar en hash como una función con dos argumentos. Y lo inverso sería alguna función hash '. Discutiré la existencia de tal hash ' a continuación. Entonces, obtendríamos
h = hash ( m , p ).
Sin embargo, no obtendríamos m = hash ' ( h , p ).
¿Por qué? La respuesta simple es que no existe un único v tal que dado que h tenemos ese h = hash ( v ). El principio del casillero nos dice que debe haber colisiones para el hash (lo que significa que debe haber algunas h para las que hay v1 y v2 tal que hash ( v1 ) = h = hash ( v2 )). Esto se debe a que la longitud de las imágenes bajo hash es fija. La longitud de las entradas de hash , sin embargo, no están delimitadas. Por lo tanto, no hay una función hash ' que devuelva un solo valor. Preferiría devolver algo así como un conjunto de valores.
Su pregunta es por qué no podemos encontrar dicho valor (es) mediante (simplemente?) ingeniería inversa hash . La respuesta a esta pregunta radica en la forma en que se construyen tales funciones hash. Su propósito es comprimir y ofuscar, lo que significa que una pequeña variación en la entrada dará lugar a cambios tremendos en la salida. Si necesita explicaciones más precisas, le recomiendo que busque una función hash simple como md5. El código fuente está disponible públicamente. ¡Intenta 'invertirlo'!