One cannot reverse a hashed password reliably into the original string. However, it IS possible to reconstruct SOME valid input that yields a given hash. I'm providing this answer because the other answers are only partially correct, and it is important to understand the relative security of a hash.
To understand this, assume you use a 1-bit hash algorithm (that is, the hash is either 1 or 0). Half of all strings that you hash will yield a "1". Expand that to a 2-bit hash, and 1-in-4 strings that you randomly hash will yield a given hash value (hashes will be 0, 1, 2, or 3... in binary 00, 01, 10, 11). Expand that to say 128 bits and, while hash collisions are FAR less common, they still occur. If your hash algorithm has known vulnerabilities, it can be computationally straightforward to defeat it.
The MD5 has, for example, can be attacked using Rainbow Tables. There are online services that offer hash "cracking" e.g. http://md5crack.com/. Here, cracking means to reconstruct SOME valid input that yields the hash. Even brute force cracking is viable with modern processing power, especially using a GPU-based approach and/or distributed computing.
Hashes are a great tool, but be aware of your security requirements and the relative ease of reversing a hash generated by your chosen hash algorithm into some valid input that yields that hash. Also, always be sure and use a salt value with your hash.
UPDATE
Now that the question has been re-written, I would refer you to AES encryption. See
Using AES encryption in C#