I don't really get this !?!

(1) Can we reverse a crypto-hash ?? There can be infinitely many arbitrary data blocks with the same MD5.
As I saw in your article, you make some assumption about the data : such as numeric, or uses special symbols etc .. But what if you have no idea AT ALL ??

(2) If the data-block is combined with a random salt before generating MD5 hash, then ?? Rainbow tables are almost useless !