概述

MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的消息进行运行,产生一个128位的消息摘要(32位的数字字母混合码)。

  • MD(Message Digest):消息摘要

特点

一个MD5理论上可能对应无数多个原文的,比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。也就是一共有2^128种可能,大概是3.4*10^38,这个数字是有限多个的,但是世界上可以被用来加密的原文则有无数的可能性。

性质

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的(相当于超损压缩)。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

算法描述

MD5算法的处理步骤可以概括为三步:数据填充、分组循环变换、拼接输出。

1.数据填充

  • 先在原文填充一个“1”,后面加上k个“0”。其中k是满足(n+1+k) mod 512 = 448的最小正整数。(首先我们一定要在最后先补一个1,当原始长度mod512等于447,那么只需要填充1位也就是填充的1;当原始长度mod512等于448,先填了一个1,那么要想满足mod 512等于448,则还需要填充511个0,也就是总共需要填充512个位)
  • 这里的512、448是“位”为单位,转成“字节”就是64、56,即mod 64 == 56 mod 64
  • 追加64位的数据长度(bit为单位,小端序存放)

2.分组循环变换

PS:这个网上的资料实在没看懂,想知道远离的参考:消息摘要算法MD5图解及C语言实现 - 知乎

3.拼接输出

这里用一句话概括:将经过若干次循环变换后的A、B、C、D以十六进制的形式拼接起来,就是传说中的MD5码了。

应用领域

我的应用主要用来对单片机升级文件的一个校验,校验给到用户手上的文件没有被修改过。

MD5加密——原理介绍相关推荐

  1. md5加密 原理 js 前后端使用

    密码进行md5加密 原理分析:加密就是存进数据库的时候变成MD5存进去,解密,就是对比的时候,将用户输入的密码转换成MD5和数据库里面的对比.; 1.我们先来看hash算法:我们可以通过 crypto ...

  2. MD5加密原理解析及OC版原理实现

    MD5加密原理解析及OC版原理实现 一.MD5算法基础概念 MD5算法是Hash算法的一种,叫做讯息摘要演算法.所谓摘要,从字面意思理解,是指内容的大概.在MD5算法中,这个摘要是指将任意数据映射成一 ...

  3. Md5加密原理及其实现算法

    MD5加密算法: MD5加密算法全称是Message Digest algorithm 5,它是一种不可逆的加密算法,即使知道源码也不能破译秘钥,主要用来验证密码,使用时,首先将密码采用Md5加密,M ...

  4. md5加密原理!!!【转】

    MD5简介 MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来 ...

  5. md5加密原理 MD5简介

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! MD5简 ...

  6. 前端JavaScript代码混淆加密原理介绍

    因为JavaScript大都是运行在浏览器端,这就导致任何人都可以直接对网站的代码进行查看,如果代码没有进行任何处理就会导致直接暴露源码,他人便可轻而易举的复制你的劳动成果,但是由于没有纯粹的加密方案 ...

  7. md5加密原理简单解释

    转载自:https://www.cnblogs.com/second-tomorrow/p/9129043.html 本文将通过漫画的形式来通俗易懂的讲述什么是MD5加密算法(Message Dige ...

  8. 加密算法---RSA 非对称加密原理及使用

    加密算法---RSA 非对称加密原理及使用 一 非对称加密原理介绍 二 加密解密测试 2.1 加密解密工具类 2.2 测试 一 非对称加密原理介绍 非对称加密算法中,有两个密钥:公钥和私钥.它们是一对 ...

  9. md5加密后不能解密

    MD5加密原理是散列算法,散列算法也称哈希算法. 计算机专业学的数据结构就有哈希表这一知识点. 比如10除以3余数为一,4除以3余数也为一,但余数为一的就不知道这个数是哪个了. 所以md5不能解密. ...

最新文章

  1. LeetCode-笔记-112、路径总和
  2. windows Azure
  3. 数字IC—FPGA同行交流
  4. 神经网络变学习率算法代码_机器学习算法之神经网络
  5. 指数加权平均与RmsProp(转载+自己总结)以及Adagrad
  6. 线性代数导论5——SVD分解
  7. PyTorch | torch.randperm()使用方法
  8. 易车与中国海洋报社达成深度合作 开拓海洋主题汽车内容
  9. 「管理数学基础」1.2 矩阵理论:线性映射、线性变换T的矩阵表示
  10. Android ViewFlipper源码分析
  11. php_l3arning_notes_2
  12. 利用matlab描点绘制平滑曲线
  13. java之继承 封装 多态
  14. 阿铭Linux_网站维护学习笔记201903021
  15. 微信公众号 接口配置
  16. PC端浏览器定位(纯前端)
  17. (毕业设计资料)基于单片机汽车自动照明灯超远近光灯设计
  18. ubuntu使用deepin-wine安装微信出现版本过低问题的解决
  19. STM32与Flash AT45DB321D之间读写数据
  20. Ubuntu开机启动黑屏,只有鼠标

热门文章

  1. 游程编码压缩及解压缩
  2. Linux下qt/C++全局键盘监控,处理键盘事件,输出按键码
  3. 3轴/6轴/9轴传感器是什么, 加速计/陀螺仪/磁力计又是什么?
  4. pion:rtc-to-webrtc示例
  5. 明日之后营地14庄中式风房子上线,网友:都是氪金大佬
  6. iPhone开发基础教程笔记(二)--第三章 处理基本交互
  7. 【vue】设置网页的标题和图标
  8. 寻找与疾病相关的SNP位点——R语言从SNPedia批量提取搜索数据
  9. Python 第三方模块 机器学习 Scikit-Learn模块 有监督学习1 交叉分解,高斯过程,保序回归
  10. java写华容道_基于java的华容道小游戏