为什么说MD5是不可逆哈希算法

本文深入探讨了MD5算法的工作原理,解释了其不可逆性的真正原因,并阐述了MD5与Base64编码结合使用的原因。MD5通过复杂的运算过程将明文转换为固定长度的散列值,而Base64则用于将二进制数据转换为可打印字符,两者在信息安全领域应用广泛。
摘要由CSDN通过智能技术生成

        MD5作为一种Hash算法,因其运算具有不可逆性,常常用于保存密码以及生成数字签名。参考博客1和2对该算法的实现原理进行了详细介绍,在此就不再赘述,只做如下总结:本质上,MD5就是将明文对应的二进制值与四个特定的32位的二进制值进行多轮的与、或、非、异或等运算,将明文对应的二进制转换成新的二进制

        关于为什么MD5是不可逆的,参考博客1中说是由于MD5的运算过程中有很多入参,但实际上,MD5运算过程中的四个入参都是确定的(详见参考博客2中的A、B、C、D)。其实由参考博客2的运算过程可知,当运算过程中出现进位时,进位被直接丢失而不会保存。也就是说,MD5的运算过程存在信息丢失。由于不知道运算过程中会有多少个进位在哪一步被丢弃,因而仅仅根据MD5的计算过程和得到的最终结果,是无法逆向计算出明文的。这才是MD5不可逆的真正原因

        此外,本文还想补充一点就是:MD5常常和Base64编码一起使用。原因是:由前面的总结可知,MD5的输入是明文对应的二进制,输出也是二进制,但由于输出的二进制足够散列,因而无法保证输出的二进制还能解析成可打印字符(以ASCII码为例,其第0~32号及第127号是控制字符或通讯专用字符,不便于打印/显示/存储),而Base64恰好是一种网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。

 

参考博客:

1、https://www.jianshu.com/p/82729c87ef68 MD5的实现原理

2、https://blog.csdn.net/xuejianbest/article/details/80391237 hash算法原理之md5过程

3、https://blog.csdn.net/qq_20545367/article/details/79538530 什么是Base64

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值