我知道密码经md5加密后,要验证密码只能再经md5加密,然后比较加密后的2个字符串。
md5不是算法计算出来的么。。类似 1<<2&1001,之类的。。为什么不能写一个逆向的算法呢。。
?
如果你有时间,强烈推荐这个视频
http://v.youku.com/v_show/id_XNDkyODExODY0.html
介绍了可数数、无穷映射的势以及图灵的可计算数,算是数学扫盲。
很简单,因为MD5是Hash算法,不是加密算法。一个MD5值对应的原始数据有无穷多个。
其实再想下,任何数据,包括几个GB的文件,通过MD5计算都能得到一个很短的定长的MD5值。我们假设这种解密方式存在,MD5岂不是世界上最强悍的压缩/解压缩算法了?
http://baike.baidu.com/link?url=E2akeXKNhXVeJJrYHPP_naBG9Xfyzv4vt4Nv191WCwz2M6qUF2iD7MEGrsadY_dkEcXs895ELqWHWX8e2REHBq#2_3
http://www.zhihu.com/question/22651987?sort=created
我们通常所说的MD5“解密算法”,其实是一种不规范的说法,正确的说法是MD5碰撞算法。也就是找出一个原始值,通过MD5运算得到的结果和给定的MD5一样。
但是原始值不见得就是当初做MD5运算的那个。碰撞算法已经被山东大学的杨小云教授破解。这意味着使用MD5对数据签名已经不可靠。
MD5加密算法都是可以被解密的,只是时间问题。加密很简单,但解密耗工耗时很大。
md5算法中包含很多取余的操作,不像楼主想的那样是什么函数之类的,所以没法解密
所谓的md5解密,并非真正意义上的解密,是靠排列组合字符,生成md5 ,和原始值对比,如果一样就算解密成功。md5可以将任意大小的文件,字符,进行加密,加密到16位md5值上,是一个不可逆的过程。如果他能真正靠算法解密,就不可能把任意大小的文件生成固定的md5值,因为必然会有数据丢失。