I know that a hash is a one-way-function and that therefore there isn't a reversal function. By reversing a hash I just mean to find some plaintext that gives the hash.
I think that I understand that to reverse a hash one can
- use dictionaries, that is, one generates a list of pairs of plaintexts and hashes. Given a hash, one then searches the dictionary for the related plaintext. I a certain sense I would say that this seems a lot like the method of just brute-forcing where one computes a lot of hashes until there is a match.
- use rainbow tables. I am not entire sure that I understand how this works, but I see this question/answer.
My questions:
Are there any other methods used in practice?
Are there any methods that target the underlying algorithm?