MD5 不可逆

35 篇文章 0 订阅

你能从书本的摘要还原出原文吗?除非原文比摘要短。


MD5作为一种校验手段而不是加密手段。在内容字节长度小于MD5值的字节长度,是可逆的,但存在重复的可能。由于概率较低,且基于加密前内容一般可识读,所以你懂的为毛有那么多md5解密的网站,但是又有人说md5绝对不可逆

首先md5不是加密,只是根据已有数据生成特征值,用于签名,完整性检查。好的散列算法要求a到b容易,但找到能生成b的数据难;a变动一点点,b完全不一样。

不可逆(preimage, one-way): 指的是攻击者在多项式时间不能从哈希值h(x)中获得原值x.
防碰撞(collision-resistance): 指的是攻击者在多项式时间不能找到两个值x和x'具有相同的哈希值, i.e., h(x)=h(x').

设计不可逆的哈希函数比设计防碰撞的哈希函数容易,
同样的, 找到哈希函数的碰撞比逆向哈希函数容易。

MD5的运算图如下:
<img src="https://i-blog.csdnimg.cn/blog_migrate/cf8c802fa5ca7c504c7d504e3b5ba2b0.png" data-rawwidth="300" data-rawheight="330" class="content_image" width="300">
其中F是一个非线性函数, MD5的不可逆性就是由非线性函数保证的(攻击者试图逆向MD5时需要解这个非线性函数F, 但是解这个非线性函数F不能获得唯一解)。

哈希函数的碰撞是客观存在的, Xiaoyun Wang的贡献是大大缩短了发现碰撞的时间。碰撞可以用来伪造原值, i.e., 用x'伪造x。但是跟哈希函数可逆性没有必然关系。



md5不是加密算法而是散列算法,
它得到的是一个类似数字签名的东东.

而且md5现在已有可行的碰撞算法(原浙大王小云搞出来的).
即已知a的散列h,即h=md5(a);可求得
b = f(h);其中b不一定等于a而md5(b)=md5(a)


我们上网时经常看到网站要检测用户的密码的强度,对强度很低的密码给出警告。因为对于强度很低的密码很容易就穷举,这跟md5没有半点联系,请不要随意联系。
再拿我的的一份合同使用md5签名为例。md5从来也没有忽悠说找不到碰撞,而是说很难找到。那么好,假设你能够在10年内找出另外一堆文字其md5恰好和我的合同书的md5签名相同,那么我能够读懂你的文字吗?我对我的合同书稍加约束,例如要求字数不大于5000个字,或者前面100个字中必须出现sp1234这样的字符,你的碰撞还有效吗?
对于通常很简短的只有几个字符的文字,如果要计算md5,我的做法是你要把它变成一定长度(例如大于100个字符)的字符串,然后计算md5。例如我们可以把用户注册名、密码、电子邮件地址、所使用的产品的厂商名四项连接起来,如果字符串长度小于100个字符我还可以把它跟自己重复连接一次。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值