1 md5的算法步骤及应用-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

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

3天内不再提示

md5的算法步骤及应用

姚小熊27 来源:网络整理 作者:网络整理 2020-11-16 16:01 次阅读

md5的算法步骤

按位补充数据

在MD5算法中,首先需要对信息进行填充,这个数据按位(bit)补充,要求最终的位数对512求模的结果为448。也就是说数据补位后,其位数长度只差64位(bit)就是512的整数倍。即便是这个数据的位数对512求模的结果正好是448也必须进行补位。补位的实现过程:首先在数据后补一个1 bit; 接着在后面补上一堆0 bit, 直到整个数据的位数对512求模的结果正好为448。总之,至少补1位,而最多可能补512位 。

扩展长度

在完成补位工作后,又将一个表示数据原始长度的64 bit数(这是对原始数据没有补位前长度的描述,用二进制来表示)补在最后。当完成补位及补充数据的描述后,得到的结果数据长度正好是512的整数倍。也就是说长度正好是16个(32bit) 字的整数倍 。

初始化MD缓存器

MD5运算要用到一个128位的MD5缓存器,用来保存中间变量和最终结果。该缓存器又可看成是4个32位的寄存器A、B、C、D,初始化为 :

A : 01 23 45 67

B: 89 ab cd ef

C: fe dc ba 98

D: 76 54 32 10

处理数据段

首先定义4个非线性函数F、G、H、I,对输入的报文运算以512位数据段为单位进行处理。对每个数据段都要进行4轮的逻辑处理,在4轮中分别使用4个不同的函数F、G、H、I。每一轮以ABCD和当前的512位的块为输入,处理后送入ABCD(128位)。

输出

信息摘要最终处理成以A, B, C, D 的形式输出。也就是开始于A的低位在前的顺序字节,结束于D的高位在前的顺序字节。

md5应用

用于密码管理

当我们需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露, 密码也很容易被破译。为了增加安全性,有必要对数据库中需要保密的信息进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也不能得到原来的密码信息。MD5算法可以很好地解决这个问题,因为它可以将任意长度的输入串经过计算得到固定长度的输出,而且只有在明文相同的情况下,才能等到相同的密文,并且这个算法是不可逆的,即便得到了加密以后的密文,也不可能通过解密算法反算出明文。这样就可以把用户的密码以MD5值(或类似的其它算法)的方式保存起来,用户注册的时候,系统是把用户输入的密码计算成 MD5 值,然后再去和系统中保存的 MD5 值进行比较,如果密文相同,就可以认定密码是正确的,否则密码错误。通过这样的步骤,系统在并不知道用户密码明码的情况下就可以确定用户登录系统的合法性。这样不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。

电子签名

MD5 算法还可以作为一种电子签名的方法来使用,使用 MD5算法就可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”,借助这个“数字指纹”,通过检查文件前后 MD5 值是否发生了改变,就可以知道源文件是否被改动。我们在下载软件的时候经常会发现,软件的下载页面上除了会提供软件的下载地址以外,还会给出一串长长的字符串。这串字符串其实就是该软件的MD5 值,它的作用就在于下载该软件后,对下载得到的文件用专门的软件(如 Windows MD5 check 等)做一次 MD5 校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用 MD5 算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面 。

垃圾邮件筛选

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

建立一个邮件 MD5 值资料库,分别储存邮件的 MD5 值、允许出现的次数(假定为 3)和出现次数(初值为零)。

对每一封收到的邮件,将它的正文部分进行MD5 计算,得到 MD5 值,将这个值在资料库中进行搜索。

如未发现相同的 MD5 值,说明此邮件是第一次收到,将此 MD5 值存入资料库,并将出现次数置为1,转到第五步。

如发现相同的 MD5 值,说明收到过同样内容的邮件,将出现次数加 1,并与允许出现次数相比较,如小于允许出现次数,就转到第五步。否则中止接收该邮件。结束。

接收该邮件。
责任编辑:YYX

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

    关注

    23

    文章

    4607

    浏览量

    92826
  • md5
    md5
    +关注

    关注

    0

    文章

    29

    浏览量

    20867
收藏 人收藏

    评论

    相关推荐

    PostgreSQL将不再支持MD5密码

    根据 PostgreSQL 代码仓库的最新动态,近日有维护者提交了“弃用 MD5 密码支持”的 commit。 该维护者指出,MD5 被认为不适合用作加密散列算法已有一段时间。 此外
    的头像 发表于 12-10 16:14 108次阅读

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

    MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,通常用于数据加密和安全校验等场合。MD5 算法可以将任意长度的消息输入计算出一个固定长度的摘要,其生
    的头像 发表于 09-21 09:57 1657次阅读
    开源物联网技术--哈希<b class='flag-5'>算法</b><b class='flag-5'>MD5</b>加密功能技术分享

    第三章:龙芯2K0300蜂鸟板资料分析

    |--u-boot-with-spl.bin.md5u boot bin md5格式文件
    发表于 09-11 17:47

    嵌入式学习-Ubuntu系统安装之使用提供的ubuntu系统

    环境文件夹中有以下文件:为了保证开发环境在下载过程中没有出现文件损坏,下载完后要对每一个文件进行MD5校验(可以通过网络进行MD5在线校验,也可以下载MD5校验工具),文件校验完生成的校验码与资料
    发表于 08-09 15:40

    Ubuntu系统安装之使用提供的ubuntu系统

    环境文件夹中有以下文件:为了保证开发环境在下载过程中没有出现文件损坏,下载完后要对每一个文件进行MD5校验(可以通过网络进行MD5在线校验,也可以下载MD5校验工具),文件校验完生成的校验码与资料
    发表于 08-08 11:00

    ESP8266上加载micropython,文件的MD5与闪存中的数据不匹配怎么解决?

    ESP8266 上加载 micropython,文件的 MD5 与闪存中的数据不匹配!
    发表于 07-19 08:08

    ESP8266 MD5怎么使用?

    ROM 中有一些 MD5 功能 提供 ( MD5Final = 0x40009900 ); 提供 ( MD5Init = 0x40009818 ); 提供 ( MD5Update =
    发表于 07-10 07:35

    idf.py下载程序,MD5不匹配导致下载失败怎么解决?

    in 0.0 seconds (effective 4491.3 kbit/s)... Filemd5: 5d61d196adc3dba01928f264eb169be7 Flash md5
    发表于 06-24 08:38

    esp32烧录flash时md5验证错误,导致不能烧录要怎么处理?

    md5: 2f96fdc5a8d3d8229c2036f90ce59db6 MD5 of 0xFF is bf962a57871258e1e226c47e04f2a18b A fatal error
    发表于 06-24 06:28

    ESP32-Sense Kit idf4.3下载固件md5报错如何解决?

    买的ESP32-Sense Kit,下载固件时出现md5错误,下载器是附带的jtag,请问该如何解决?
    发表于 06-20 08:14

    ESP32-WROOM-32D无法写入flash,MD5检验错误:MD5 of file does not match data in flash怎么解决?

    kbit/s)... Filemd5: b181f1484c264652f0f20d506db35eca Flash md5: 4c03feeb3298a10ad0ea93ed8c09925b MD5
    发表于 06-20 07:14

    esp32如何先将OAT下来的固件进行sha256或者MD5校验,再写入相应的flash区域?

    esp32如何先将OAT下来的固件进行sha256或者MD5校验,再写入相应的flash区域,OAT下来的固件先放在哪里?
    发表于 06-07 07:53

    Linux中文件MD5校验方法

    由于生成的md5信息中,每个md5值后都紧跟着对应的文件的路径(可能是相对路径),于是将生成的md5保存到某个文件中,以后可以使用该文件来检查md5值对应文件内容是否发生了修改。
    发表于 04-22 12:40 662次阅读

    stm32写BootLoader程序遇到的几个问题求解

    我最近在写一个BootLoader程序,以前没有接触过md5和mbedtls,有些疑问。现在我需要使用md5校验文件完整性,但是官方的md5库需要依赖mbedtls库,mbedtls库必须
    发表于 03-28 07:48

    如何对MD5加密算法优化?

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