http://en.wikipedia.org/wiki/Cryptographic_hash_function
Bitcoin uses SHA-256 has for mining, and RIPEMD-160 hash for generating bitcoin addresses.
A Merkle root is the top hash in a tree of hashes performed in a particular order:
http://en.wikipedia.org/wiki/Merkle_tree
Blocks are uniquely identified by their hash value.
Calculate the SHA-256 hash of the block header. If the result is low enough to satisfy the current difficulty, then the block header is "solved".
Hashes can't currently be performed in reverse. They are a one-way function. You start with some sort of data, then you perform the hash algorithm on that data. The result is a has value.
The following is not possible:
- Start with a hash value
- Perform an algorithm on the hash value
- The result is a valid bitcoin header
A bitcoin block? No. The definition of a "solved" block is a block header that results in a double SHA-256 hash value that is less than a target value. Therefore, repeatedly hashing while modifying a nonce between each attempt is currently the fastest way known to "solve" a block.