浅谈MD5

提到MD5大家都非常熟悉,有好多人称之为MD5加密算法。

其实呢,称之为加密算法其实是不严谨的,因为加密其实是将我们的明文内容通过算法得到密文内容,我们可以通过秘钥和解密算法再将密文内容解密为明文内容。所以说MD5算法其实更大意义上只是一种摘要算法(它只是为我们的明文内容生成一串序列号,即摘要值,我们可以视这串序列号为明文内容的指纹,或者是身份证号)。它具有高度的离散性(比如“ABC”的摘要值为:902FBDD2B1DF0C4F70B4A5D23525E932,但是“ABC ”的摘要值为:12C774468F981A9487C30773D8093561,只是加了一个空格,这个值就完全变了,没有一点规律可言)

所以我们在发表文章时,可以通过MD5算法得到文章的摘要值A,这样别人拿到我们的文章后,只需要通过MD5算法得到拿到的文章的摘要值B,然后对比A是否等于B,如果不等于,那文章就是被别人篡改过了。

总而言之,我们可以将MD5摘要值看作是明文内容的指纹,或者是身份证号。

下面是我们常遇到的三个关于MD5的误区:

①MD5算法不可逆,那么网上的那些MD5在线加解密怎么看?

MD5算法是不可逆的,我们无法从算法入手还原出MD5算法处理前的结果。由于MD5是信息-摘要算法,通过摘要是无法得到原始数据的,所以解密这一说法本身就是错误的。

虽然MD5算法不可逆,也无法通过摘要还原出原始数据,但这不代表安全性就是无懈可击的。

由于字符串通过MD5计算的摘要是唯一的,那么MD5字典随着时间积累保存越来越多的MD5记录,通过穷举这个字典就可以很简单地找到你的密码。

比如某这个网站就保存了很多MD5记录,也就是这个网站有一个MD5字典,我们拿一个摘要值,然后穷举这个字典,马上就找到这个摘要值对应的明文内容。

以上不是通过破解MD5算法,也不是还原信息摘要的方式得到文明内容。而是通过穷举MD5字典(字典里面保存着类似 (摘要值) 202CB962AC59075B964B07152D234B70:(明文内容)123这样的K-V键值对)。

②MD5算法不是常用于账户密码的加密吗?

这样理解是不严谨的,因为我们也是用MD5计算出账户密码的摘要值,通过这个摘要值是无法还原出账户的原始密码的。因为摘要值只是个验证身份的令牌(客户端登录时,将用户输入的密码进行MD5编码得到摘要值后与数据库中存的摘要值进行对比,如果一样则证明密码输入正确),不能通过令牌还原出原始数据。

③md5是唯一的吗?

md5作为数据库中的主键可行吗?这就涉及到一个问题,md5值是唯一的吗?答案是,理论上是不唯一的。也就是一个原始数据,只对应一个md5值;但是一个md5值,可能对应多个原始数据(概率极低,但是也有可能),因为MD5是有限多个的而原文可以是无数多个。 比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hero♞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值