MD5怎么解密?
发布于 8 年前 作者 bykege 18526 次浏览 来自 问答

md5的加密方法是: md5 = crypto.createHash(‘md5’); userPwd = md5.update(userPwd).digest(‘hex’);

对于已经加密的userPwd,请问解密方法是什么?

11 回复

md5可以理论上可以逆向 但是很困难 否则也不会成为主流了 建议放弃

不需要解密吧, 直接用加密后的md5比较

MD5 是散列算法, 理论上没法解密, 只能用彩虹表进行匹配破解

后台存储的是MD5加密后的字符串,我想在前端显示出来,看来是不能了。。。

@bykege 或者你采用双向非对称加密 AES 啥的

来自酷炫的 CNodeMD

md5不可能解的!楼上说理论上可以~也是错的~ 理论上也不可以!md5是一个标识!举个例子! 一个电影300m md5后,为32位字符串,你说怎么解密?难道这几个字符能转成一个电影?

来自nexus5x

对用户密码取 MD5 保存正是考虑到了 MD5 基本上不存在暴力破解以外的手段,从而保障用户的密码安全。(实际应用中建议加盐) 目前认为已知 MD5 密文求解明文的方法主要是彩虹表和暴力破解。 对用户密码进行校对时,应当对用户输入进行同样的散列,比对两个散列是否一致即可知晓原文是否一致。即在生产中我们认为「若MD5§=MD5(q),则p=q」,不必进行「MD5’(q)=p」的比对即可认为「p=q」。 当然这实际上是不正确的,此外由于 2003 年山东大学张小云教授发现了已知 p 可在较短时间内找到 q 使得 MD5§ = MD5(q),MD5 已被认为是不安全的散列算法,因此建议使用 SHA-256。

首先你要知道最基本的算法计算过程,des和rsa是密钥加密,只要知道密钥,就可以进行解密,数学原理可以先了解一下取模运算, 对称密钥的数据原理很简单,四个变量 P Q A B 其中P和Q是大素数 N = P * Q R= (P-1) * (Q-1) A为任意数,但是要求与 P - 1 和 Q- 1 互质 B为小于A,且与A互质,满足 B * A = 1 (mod R) (N,A)为公钥,(N.B)为私钥 明文 ^ A = 密文 (mod N) 密文 ^ B = 明文 (mod N)

所以可以进行解密

md5的算法叫单向散列算法,也叫哈希函数, 特点只有一条两个输入值是不相同的,根据同一函数,得到结果也不同 而所谓的张小云教授的发现,也只是证明了哈希函数中存在哈希碰撞,也就是两个不同的值,根据同一哈书,结果相同 但是并不意味md5就被认为是不安全的散列算法

理论上直接逆向…,但是对于楼主说的用户密码的md5,比如一些cmd5网站,他们通过数据库保存了大量的源字符串和md5字符串集合(提前计算好后存入数据库),你可以直接查询被散列(md5其实不算是加密) 过的数据,他会返回给你一个源字符串,只要你源字符串不是很奇葩的,很快很检索出来的。

md5本来就不是加密,但是楼主的情况,可以暴力穷举

谢谢各位的回答~

回到顶部