我是靠谱客的博主 大气钥匙,最近开发中收集的这篇文章主要介绍为什么说MD5是不可逆哈希算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

        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

最后

以上就是大气钥匙为你收集整理的为什么说MD5是不可逆哈希算法的全部内容,希望文章能够帮你解决为什么说MD5是不可逆哈希算法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部