And I will, but you do realize that a person (me) with virtually no programming experience (except for coding an RPG in Qbasic when I was 12) will have a very hard time understanding that WIKI stuff which makes reference to things I've never heard of? I'm not sure why you can't figure out a way to tell your computer to get around the problem. Like, if you know what a given output needs to be, why cant you figure out what the input needs to be? It is based on an algorithm after all. Your computer isn't just guessing values 'randomly,' since randomness is another word for causation (caused by randomness). Why can't you use the algorithm to determine what the relationship is between inputs and outputs such that you can determine why a certain input gives the output that it does? My guess is that when TiagoTiago says "you can't know what effect a change in the input will have in the output," he really means "it's INFEASIBLE to try to know what effect a change in the input will have in the output." It's gotta be possible.
With a hash function there is no discernible pattern between the input and the output. Hash functions were made complicated on purpose. The only way to find out what the output for any given input is, is to run the function on it and see what comes out. By design, even a minor change to the input always results in a drastic change to the output.
The algorithm cannot be done in reverse. Google it, find the implementation, and you'll see why. Too many steps "throw away" bits of intermediate information along the way - information you would need to do the algorithm in reverse. This is done repeatedly during each hash, and is intentional.
There isn't a way to get the input from an output - except by guessing inputs by trial and error and calculating the output and seeing if it matches the desired result.
Finally. Thanks, bro. You're a bro. That's you.