在之前的文章中,我们聊了不少的加密算法,今天我们聊一种被广泛使用的密码散列函数——MD5。

MD5又叫MD5信息摘要算法,经常用于确保信息传输的完整性和一致性 。从严格意义上来说,MD5并不是加密算法,只能是一种哈希算法或是叫做摘要算法。MD5算法对比普通的加密算法缺少了解密的过程,它无法从密文(散列值)反过来得到原文。

MD5应用场景

  • 用户密码保护

在保存用户密码时,不记录密码本身,只记录密码的MD5结果(即使数据库被盗也无法反推出明文)。

  • 文件完整性校验

先在发送端计算一次文件的MD5,并把结果发送给接收端,接收端在接受文件后也计算一次MD5,两次结果一致文件完整。

  • 垃圾邮件筛选

在电子邮件使用越来越普遍的情况下,可以利用 MD5 算法在邮件接收服务器上进行垃圾邮件的筛选,以减少此类邮件的干扰。

  • 数字签名

发布程序时同时发布其MD5,下载后比较MD5是否相同,就可知道程序是否被篡改。

MD5算法原理

MG5以512位分组来处理输入的信息,每一分组又被划分为16个32位子分组。经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

在MD5算法中,首先需要对信息进行填充,填充方法如下:先在信息后面填充一个1,之后就是无数个0,直到使其字节长度对512求余数的结果等于448,即(n*512) + 448 ,为什么要使余数为448呢,因为剩下的512-448 等于64位 是用于表示填充前的信息长度。加上剩下的64位,即(n+1)*512,长度刚刚好是512的整数倍数。

然后就与链接变量进行循环运算,得出结果。MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,它们分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。

MD5的特点

  1. 压缩性:无论数据长度是多少,计算出来的MD5值长度相同。
  2. 容易计算性:由原数据容易计算出MD5值。
  3. 抗修改性:即便修改一个字节,计算出来的MD5值也会巨大差异。
  4. 抗碰撞性:知道数据和MD5值,很小概率找到相同MD5值相同的原数据。

MD5虽然理论上不可逆,但还是可以通过“查字典”的方式获取MD5原文信息,并且因为MD5的碰撞性,决定了存在两个不同的输入信息,其MD5相同的可能,因此不适用于安全性认证。

简述MD5信息摘要算法相关推荐

  1. 分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法

    1 介绍 1.1 DES对称加密算法介绍 对称加密算法 通信双方(通信主体)同时掌握一个钥匙,加解密都由这一个钥匙完成.通信双方通信前共同拟定一个密钥,不向第三方公开,发送前加密和接受后解密都由此密钥 ...

  2. 密码学 MD5信息摘要算法

    一.简介 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确 ...

  3. MD5信息摘要算法详解

    MD5信息摘要算法详解 文章目录 MD5信息摘要算法详解 01 MD5概要 02 MD5特性 03 MD5应用 04 MD5实现算法 05 MD5在线网站 01 MD5概要 MD5信息摘要算法,一种被 ...

  4. 一文详解 MD5 信息摘要算法

    对于软件研发人员来说 MD5 不是一个陌生的词汇,平时的软件研发中,经常使用 MD5 校验消息是否被篡改.验证文件完整性,甚至将MD5当作加密算法使用. MD5虽不陌生,但不是所有研发人员都了解其算法 ...

  5. MD5信息摘要算法解析

    个人博客请访问 http://www.x0100.top 小明:老师,最近老板让我研究微信支付的接口文档,可是有个地方我总是弄不明白. 老师:什么地方不明白,说来听听. 小明:微信支付的接口有许多业务 ...

  6. 信息摘要算法之一:MD5算法解析及实现

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. ...

  7. 加密解密、信息摘要算法收集

    MD5算法研究 综述 md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa ...

  8. 信息摘要算法:HMAC算法分析

    1.HMAC概述 HMAC算法首先它是基于信息摘要算法的.目前主要集合了MD和SHA两大系列消息摘要算法.其中MD系列的算法有HmacMD2.HmacMD4.HmacMD5三种算法:SHA系列的算法有 ...

  9. Mac电脑系统如何查看文件MD5信息?

    在我们下载了一个比较大的文件之后,往往要验证文件下载过程是否有损坏或者是否一致,对于macOS系统来说查看dmg安装包.pkg安装文件.ISO文件.图片文件等等文件的MD5信息其实非常简单,不需要额外 ...

最新文章

  1. 点分十进制IP校验、转换,掩码校验
  2. AI 热潮之下,初创企业能否躲过科技巨头的碾压?
  3. KAIXIN000发狠 誓将匿名制进行到底!
  4. linux安装后硬盘变小,Linux硬盘安装步骤
  5. Flask 第三方组件之 WTForms
  6. c/c++排坑(4) -- c/c++中返回局部变量
  7. 新冠隔离让你家Wifi变慢?全球网络大塞车AI缓拥堵,边缘计算或成杀手锏
  8. java线程轮询_基于springboot实现轮询线程自动执行任务
  9. socket编程(八)
  10. oracle客户端查看版本号,Oracle 版本查看及版本号说明
  11. C#网络编程----文件流
  12. WIN7无法卸载掉中文繁体注音输入法
  13. 遗传算法matlab_【优化求解】遗传算法解决背包问题
  14. 偏差-方差分解、损失函数和正则化
  15. 服务器tpm性能指标,如何计算TPM的关键指标OEE?
  16. 支持m3u8的php视频cms,分享一个苹果CMS可用P2P的M3U8解析代码
  17. Linux下自动化工具
  18. golang常用加签验签 - 2.hmac
  19. 虚拟现实是计算机软件么,虚拟现实技术对于电脑软件、硬件的配置要求有哪些?...
  20. 元数据管理工具Atlas学习笔记之使用

热门文章

  1. Mybatis逻辑分页原理解析RowBounds
  2. 宝塔安装composer
  3. ubuntu16.4长按键盘中的键才能打字
  4. 自己做量化交易软件(34)小白量化实战7--投资理念与通达信公式回测(2)
  5. java语言打印图形_JAVA语言入门教程之打印图形实例——打印矩形
  6. Recursive总结
  7. 单片机知识点总结框图_单片机基础知识
  8. 小程序自定义键盘组件之车牌号录入
  9. 【BZOJ3213】抛硬币(ZJOI2013)-期望DP+KMP+高精度
  10. 微信小程序跳转到其他网页(外部链接)