0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MD5到底算不算一种加密算法?

OSC开源社区 来源:OSC开源社区 作者:张张 2022-11-24 11:52 次阅读

一旦提到加密算法,经常有人会有这样的疑问:MD5 到底算不算一种加密算法呢?

在回答这个问题之前,我们需要先弄清楚两点:

什么是加密算法?

什么是 MD5?

1什么是加密算法?

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

-- 来自《百度百科》

使用密码学可以达到以下三个目的:

数据保密性:防止用户的数据被窃取或泄露;

数据完整性:防止用户传输的数据被篡改;

身份验证:确保数据来源与合法的用户。

加密算法分类

常见的加密算法大体可以分为两大类:对称加密和非对称加密。

对称加密

对称加密算法就是用一个秘钥进行加密和解密。

2a5ae5f8-6b2e-11ed-8abf-dac502259ad0.png

非对称加密

与对称加密算法不同的是,进行加密与解密使用的是不同的秘钥,有一个公钥-私钥对,秘钥正确才可以正常的进行加解密。

2a7b7fc0-6b2e-11ed-8abf-dac502259ad0.png

2什么是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),还原出原始的消息的。

下面这个消息摘要,你知道他的原始信息是什么吗?

MessageDigest='454e2624461c206380f9f088b1e55fae'

其实,原始信息是以下长长的字符串:
93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0Nx
TulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC
0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOm
Vya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCo
B15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD

恒定性

如果按照以上示例的原始信息,大家与我计算出来的消息摘要不一样,那肯定你是使用了一个假的 MD5 工具,哈哈哈。

当原始消息恒定时,每次运行MD5产生的消息摘要都是恒定不变的,无论是谁来计算,结果都应该是一样的。

不可预测性

让我们再来尝试一次,「不可逆」中应用到的原始消息的最后一个字母'D',修改成'E',如下所示:

93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0Nx
TulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC
0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOm
Vya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCo
B15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onE

那经 MD5 后产生的消息摘要,是不是和 '454e2624461c206380f9f088b1e55fae' 很相似呢?

让大家失望了,产生的消息摘要没有一丝一毫的关联性,新的消息摘要如下所示:

Message Digest = '8796ed5412b84ff5c4769d080b4a89a2'

聊到这里,突然想到一个有意思的问题:

MD5是32位的,理论上是有限的,而世界上的数据是无限的,那会不会生成重复的MD5值?

是不是也有同学产生相似的疑问呢?

理论上来讲,当然会生成重复的MD5值。

分享一个经典的例子:

数据源1:

d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f89 
55ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b 
d8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0 
e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70

数据源2:

d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f89 
55ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b 
d8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0 
e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70

它们竟然有着共同的MD5值(☞ 注意看,数据源1、2是存在很多细节不同的):

79054025255fb1a26e4bc422aef54eb4

3MD5是加密算法吗?

MD5计算,对原始消息(Message)做有损的压缩计算,无论消息(输入值)的长度字节是多少,是1亿字节还是1个字节,都会生成一个固定长度(128位/16字节)的消息摘要(输出值)。

也就是说,MD5 算法和加密算法都可以将信息转换为另外一种内容,但是,MD5 算法对比 加密算法 缺少了解密过程。

好比一头山羊,被层层加工制作成一包包风干羊肉,这个就是一次MD5操作。这种加工过程,势必将羊身体N多部位有损失,故无法通过羊肉干再复原出一头山羊...

2aa31832-6b2e-11ed-8abf-dac502259ad0.png

使用加密算法加密后的消息是完整的,并且基于解密算法后,可以恢复原始数据。而MD5 算法得到的消息是不完整的,并且通过摘要的数据也无法得到原始数据。

所以严格意义上来讲,MD5 称为摘要/散列算法更合适,而不是加密算法

那现实的问题来了,MD5究竟有什么用?

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • md5
    md5
    +关注

    关注

    0

    文章

    29

    浏览量

    20867
  • 加密算法
    +关注

    关注

    0

    文章

    215

    浏览量

    25541
  • 数据加密
    +关注

    关注

    0

    文章

    51

    浏览量

    12713

原文标题:MD5到底算不算一种加密算法?

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【安全算法MD5MD5摘要运算的C语言源码实现

    【安全算法MD5MD5摘要运算的C语言源码实现
    的头像 发表于 09-12 16:32 3599次阅读
    【安全<b class='flag-5'>算法</b>之<b class='flag-5'>MD5</b>】<b class='flag-5'>MD5</b>摘要运算的C语言源码实现

    如何对MD5加密算法优化?

    有人针对程序安全启动过程,进行MD5算法的优化嘛。目前采用标准算法,时间稍长,如果有人做过优化的话,可以分享下,谢谢。
    发表于 02-18 08:20

    基于MD5算法的密码加密

    MD5进行密码的加密MD5算法对密码的加密规则,第个,输入的长度不固定但是输出的长度是固定的
    发表于 07-17 06:11

    加密算法(DES,AES,RSA,MD5,SHA1,Base64)

    加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式
    发表于 07-19 08:44

    【开源三方库】crypto-js加密算法库的使用方法

    加密算法(如 AES、DES)和散列函数(如 MD5、SHA1、SHA256),以及消息认证码(MAC)算法。它提供了套完整的加密工具,满
    发表于 09-08 15:10

    md5加密算法源代码

    This file contains a summary of what you will find in each of the files thatmake up your Md5 DLL.
    发表于 09-08 09:18 81次下载

    一种基于MD5硬件Key的票据号产生方法

    文章讨论了一种基于加密处理器的商业票据产生方法,介绍了采用多个母密钥片断产生MD5 密钥的算法,以及密钥在加密处理器中的存储和管理方式,并给
    发表于 01-22 15:23 10次下载

    MD5加密算法改进及其特征码在杀毒软件中的应用

    文章分析了MD5算法发展、危机、碰撞分析并加入"盐值"对算法做了改进,然后给出了其C++的具体实现算法;分析MD5特征码的特点构建了特征库配
    发表于 12-21 10:19 8次下载

    C#教程之MD5加密

    C#教程之MD5加密,很好的C#资料,快来学习吧。
    发表于 04-20 15:27 14次下载

    labview md5加密算法.llb

    md5加密算法 md5加密算法 md5加密算法 md5
    发表于 05-25 14:25 111次下载

    md5算法原理与实现

    MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。用于确保信息传输完整致。是计算机广泛使用的杂凑算法,主流编程语
    发表于 12-28 08:42 7124次阅读
    <b class='flag-5'>md5</b><b class='flag-5'>算法</b>原理与实现

    MD5的硬件应该如何加密详细方法说明

    加密技术与我们的日常生活息息相关,在信息社会更是凸现重要。本文将主要就MD5算法及密码学和其硬件实现做些相关探讨。MD5的全称是messa
    发表于 08-19 17:31 2次下载
    <b class='flag-5'>MD5</b>的硬件应该如何<b class='flag-5'>加密</b>详细方法说明

    md5算法可逆吗_MD5值是什么

    MD5不可逆的原因是由于它是一种散列函数(也叫哈希函数,哈希函数又称散列函数,杂凑函数,他是个单向密码体制,即从明文到密文的不可逆映射,只有加密过程没有解密过程,哈希函数可以将任意长
    的头像 发表于 11-16 15:30 1.3w次阅读

    md5是什么_md5怎么用

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出个128位(
    的头像 发表于 11-16 15:42 1.2w次阅读

    开源物联网技术--哈希算法MD5加密功能技术分享

    MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,通常用于数据加密和安全校验等场合。MD5
    的头像 发表于 09-21 09:57 1657次阅读
    开源物联网技术--哈希<b class='flag-5'>算法</b><b class='flag-5'>MD5</b><b class='flag-5'>加密</b>功能技术分享