官方一点来讲的话就是一种数字摘要,它可以将任意长度的字符串转换成128位的散列值,也就是16字节的数字。被大众认为是使用最广泛的密码散列函数
通俗点来讲的话就是因为它可以产出128位(16字节)的散列值,用于确保信息传输完整一致
用途最多的地方就是用户密码的加密【将用户输入的明文密码转换成一个128位的散列值,这个散列值可以用来验证用户输入的密码是不是正确的密码,从而不必将用户的密码铭文存储在服务器上,进而保护用户的密码安全】
还有一个用途就是将文件完整性进行检查【检查文件是否被篡改】
不可逆
以下是一个加密逻辑,那加密用到的是这个逻辑解密也肯定是喽,解密也是可以看这张图片的哦
md5中两个不同的明文加密得到相同的密文的几率是极低的,所以可以用以上逻辑判断
众所周知MD5它是一种不可逆的加密方式,所以不能解密,但是我们可以通过以下两种方法进行解密。
第一种:穷举法来进行解密。那么什么是穷举法嘞?它就是将所有可能的明文密码进行计算,并和加密后的密文进行一个对比,如果相等则表示找到了正确的密码,否则继续穷举。那又由于MD5密码长度是128位,所以穷举法非常耗时,而且有可能永远找不到正确的密码。
第二种:使用在线解密工具,这种工具可以将MD5密码提交到一个在线的数据库,然后这个数据库会把我们提交的MD5密码和它的库中的密码进行对比,如果有相同的,就可以获取到正确的密码啦。
那就简单的举一个例子吧:
第一步:找到以下网站
网站链接:MD5
第二步:进行注册·登录
第三步:登录完成之后就要输入你要解的密文,以下是我的密文示例
点击输入验证码 然后进行查询即可
当然这种方法也有局限性,只能解密出已经被解密过的MD5密码,而不能解密出新的MD5密码哦
MD5的碰撞性,决定了存在两个不同的输入信息
因为MD5有相同的可能,所以不适用于安全性的认证
它是对于原来的明文拼接的字符串再一次的进行加密,如果这个字符串不泄露,那么密文就是安全的
将用户输入的密码按照相同的方法进行加盐值+加密,然后进行对比存储的密码是否是相同的就可以啦
那这样做也是有缺点存在的只要我们的固定盐值丢失啦,那么也就意味着密码被破解啦,也就相当于是先攻破盐值,然后进行对MD5加密的密码再进行破解,逐一攻破那也就相当于是Game Over┗|`O′|┛ 嗷~~
他就是给我们每一个用户的盐值都是不同的,那么不法分子是不是就没有办法进行破解全部。具体过程的话是这样的:【每当破解一个用户的密码,都需要按盐值进行巴黎怕【跑加密,直到找到密码,这会消耗大量的时间】
这其实就是相当于是拖延时间啦,但是好处还是有的,每一个用户的盐值都是不通过的,不会破解之后,丢失全部用户的密码,并且需要大量的时间来进行破解
以上这一篇就是我对于MD5加密的一个简单的了解,希望大家可以多多指教吖