一旦提到加密算法,到底经常有人会有这样的算不算种算法疑问 :MD5 到底算不算一种加密算法呢
? 在回答这个问题之前 ,我们需要先弄清楚两点
: 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理
,使其成为不可读的到底一段代码为“密文”,使其只能在输入相应的算不算种算法密钥之后才能显示出原容
,通过这样的加密途径来达到保护数据不被非法人窃取、阅读的免费模板到底目的。 该过程的算不算种算法逆过程为解密,即将该编码信息转化为其原来数据的加密过程。 -- 来自《百度百科》 使用密码学可以达到以下三个目的到底: 常见的算不算种算法加密算法大体可以分为两大类 :对称加密和非对称加密。 对称加密算法就是加密用一个秘钥进行加密和解密。 与对称加密算法不同的源码下载到底是,进行加密与解密使用的算不算种算法是不同的秘钥,有一个公钥-私钥对 ,加密秘钥正确才可以正常的进行加解密。 MD5算法:MD5全称Message Digest Algorithm 5
,即消息摘要算法第5版。 MD5 以 512位分组来处理输入的信息
,且每一分组又被划分为16个32位子分组,经过了一系列的亿华云处理后,算法的输出由四个32位分组组成 ,将这四个32位分组级联后将生成一个128位散列值。 MD5算法的主要特点: MD5加密后值固定长度是128位,使用32个16进制数字进行表示
。 如果告诉原始消息,算法是MD5
,迭代次数=1的情况下,我们一样可以得到一摸一样的消息摘要
,但是香港云服务器反过来却不行。 在不知道原始消息的前提下
,是无法凭借16个字节的消息摘要(Message Digest),还原出原始的消息的
。 下面这个消息摘要,你知道他的原始信息是什么吗
? 其实 ,原始信息是以下长长的字符串
: Nx c4yR8IQvMLfC lOm VrO8FCo 如果按照以上示例的源码库原始信息 ,大家与我计算出来的消息摘要不一样,那肯定你是使用了一个假的 MD5 工具,哈哈哈
。 当原始消息恒定时
,每次运行MD5产生的消息摘要都是恒定不变的,无论是谁来计算 ,结果都应该是一样的云计算。 让我们再来尝试一次,「不可逆」中应用到的原始消息的最后一个字母D,修改成E,如下所示: Nx c4yR8IQvMLfC lOm VrO8FCo 那经 MD5 后产生的消息摘要,是不是和 454e2624461c206380f9f088b1e55fae 很相似呢? 让大家失望了
,产生的消息摘要没有一丝一毫的关联性,新的消息摘要如下所示: 聊到这里,突然想到一个有意思的问题: MD5是32位的,理论上是有限的
,而世界上的数据是无限的
,那会不会生成重复的MD5值? 是不是也有同学产生相似的疑问呢
? 理论上来讲,当然会生成重复的MD5值。 分享一个经典的例子 : 复制d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f89 ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b d8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0 复制 d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f89 ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b d8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0 它们竟然有着共同的MD5值(☞ 注意看
,数据源1
、2是存在很多细节不同的): MD5计算,对原始消息(Message)做有损的压缩计算
,无论消息(输入值)的长度字节是多少
,是1亿字节还是1个字节 ,都会生成一个固定长度(128位/16字节)的消息摘要(输出值)。 也就是说
,MD5 算法和加密算法都可以将信息转换为另外一种内容 ,但是 ,MD5 算法对比 加密算法 缺少了解密过程 。 好比一头山羊,被层层加工制作成一包包风干羊肉
,这个就是一次MD5操作。这种加工过程,势必将羊身体N多部位有损失,故无法通过羊肉干再复原出一头山羊... 使用 加密算法 加密后的消息是完整的,并且基于解密算法后
,可以恢复原始数据。而 MD5 算法 得到的消息是不完整的,并且通过摘要的数据也无法得到原始数据。 所以严格意义上来讲 ,MD5 称为摘要/散列算法更合适 ,而不是加密算法! 那现实的问题来了,MD5究竟有什么用?

