https://razican.com/2010/05/md5-project-2-0/
Md5 Project 2.0