MD5算法描述[转百度百科]

在PowerShell中计算文件哈希值:MD5与SHA-256的探索_powershell md5 哈希值是通过特定算法从数据中生成的固定长度的字符串。哈希算法的特点是:相同的输入总会产生相同的输出,而不同的输入则会产生不同的输出。MD5(Message Digest Algorithm 5)和SHA-256(Secure Hash Algorithm 256)是两种常用的哈希算法。其中,SHA-256相对于MD5来说,提供了更高的安全性。PowerShell是微软发布的任务自动化和配置管理框架,它包括命令行shell和脚本语言。 阅读详情

算法描述

 

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

  在MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息的位长=N*512+448+64=(N+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

  MD5中有四个32位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。

  当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。

  将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。

  主循环有四轮(MD4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。

  以一下是每次操作中用到的四个非线性函数(每轮一个)。

  F(X,Y,Z) =(X&Y)|((~X)&Z)

  G(X,Y,Z) =(X&Z)|(Y&(~Z))

  H(X,Y,Z) =X^Y^Z

  I(X,Y,Z)=Y^(X|(~Z))

  (&是与,|是或,~是非,^是异或)

  这四个函数的说明:如果X、Y和Z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。

  F是一个逐位运算的函数。即,如果X,那么Y,否则Z。函数H是逐位奇偶操作符。

  假设Mj表示消息的第j个子分组(从0到15),<<

  FF(a, b, c, d, Mj, s, ti)表示 a = b + ((a + F(b, c, d) + Mj + ti) << s)

  GG(a, b, c, d, Mj, s, ti)表示 a = b + ((a + G(b, c, d) + Mj + ti) << s)

  HH(a, b, c, d, Mj, s, ti)表示 a = b + ((a + H(b, c, d) + Mj + ti) << s)

  II(a, b, c, d, Mj, s, ti)表示 a = b + ((a + I(b, c, d) + Mj + ti) << s)

  这四轮(64步)是:

  第一轮

  FF(a, b, c, d, M0, 7, 0xd76aa478)

  FF(d, a, b, c, M1, 12, 0xe8c7b756)

  FF(c, d, a, b, M2, 17, 0x242070db)

  FF(b, c, d, a, M3, 22, 0xc1bdceee)

  FF(a, b, c, d, M4, 7, 0xf57c0faf)

  FF(d, a, b, c, M5, 12, 0x4787c62a)

  FF(c, d, a, b, M6, 17, 0xa8304613)

  FF(b, c, d, a, M7, 22, 0xfd469501)

  FF(a, b, c, d, M8, 7, 0x698098d8)

  FF(d, a, b, c, M9, 12, 0x8b44f7af)

  FF(c, d, a, b, M10, 17, 0xffff5bb1)

  FF(b, c, d, a, M11, 22, 0x895cd7be)

  FF(a, b, c, d, M12, 7, 0x6b901122)

  FF(d, a, b, c, M13, 12, 0xfd987193)

  FF(c, d, a, b, M14, 17, 0xa679438e)

  FF(b, c, d, a, M15, 22, 0x49b40821)

  第二轮

  GG(a, b, c, d, M1, 5, 0xf61e2562)

  GG(d, a, b, c, M6, 9, 0xc040b340)

  GG(c, d, a, b, M11, 14, 0x265e5a51)

  GG(b, c, d, a, M0, 20, 0xe9b6c7aa)

  GG(a, b, c, d, M5, 5, 0xd62f105d)

  GG(d, a, b, c, M10, 9, 0x02441453)

  GG(c, d, a, b, M15, 14, 0xd8a1e681)

  GG(b, c, d, a, M4, 20, 0xe7d3fbc8)

  GG(a, b, c, d, M9, 5, 0x21e1cde6)

  GG(d, a, b, c, M14, 9, 0xc33707d6)

  GG(c, d, a, b, M3, 14, 0xf4d50d87)

  GG(b, c, d, a, M8, 20, 0x455a14ed)

  GG(a, b, c, d, M13, 5, 0xa9e3e905)

  GG(d, a, b, c, M2, 9, 0xfcefa3f8)

  GG(c, d, a, b, M7, 14, 0x676f02d9)

  GG(b, c, d, a, M12, 20, 0x8d2a4c8a)

  第三轮

  HH(a, b, c, d, M5, 4, 0xfffa3942)

  HH(d, a, b, c, M8, 11, 0x8771f681)

  HH(c, d, a, b, M11, 16, 0x6d9d6122)

  HH(b, c, d, a, M14, 23, 0xfde5380c)

  HH(a, b, c, d, M1, 4, 0xa4beea44)

  HH(d, a, b, c, M4, 11, 0x4bdecfa9)

  HH(c, d, a, b, M7, 16, 0xf6bb4b60)

  HH(b, c, d, a, M10, 23, 0xbebfbc70)

  HH(a, b, c, d, M13, 4, 0x289b7ec6)

  HH(d, a, b, c, M0, 11, 0xeaa127fa)

  HH(c, d, a, b, M3, 16, 0xd4ef3085)

  HH(b, c, d, a, M6, 23, 0x04881d05)

  HH(a, b, c, d, M9, 4, 0xd9d4d039)

  HH(d, a, b, c, M12, 11, 0xe6db99e5)

  HH(c, d, a, b, M15, 16, 0x1fa27cf8)

  HH(b, c, d, a, M2, 23, 0xc4ac5665)

  第四轮

  II(a, b, c, d, M0, 6, 0xf4292244)

  II(d, a, b, c, M7, 10, 0x432aff97)

  II(c, d, a, b, M14, 15, 0xab9423a7)

  II(b, c, d, a, M5, 21, 0xfc93a039)

  II(a, b, c, d, M12, 6, 0x655b59c3)

  II(d, a, b, c, M3, 10, 0x8f0ccc92)

  II(c, d, a, b, M10, 15, 0xffeff47d)

  II(b, c, d, a, M1, 21, 0x85845dd1)

  II(a, b, c, d, M8, 6, 0x6fa87e4f)

  II(d, a, b, c, M15, 10, 0xfe2ce6e0)

  II(c, d, a, b, M6, 15, 0xa3014314)

  II(b, c, d, a, M13, 21, 0x4e0811a1)

  II(a, b, c, d, M4, 6, 0xf7537e82)

  II(d, a, b, c, M11, 10, 0xbd3af235)

  II(c, d, a, b, M2, 15, 0x2ad7d2bb)

  II(b, c, d, a, M9, 21, 0xeb86d391)

  常数ti可以如下选择:

  在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。(4294967296等于2的32次方)

  所有这些完成之后,将A、B、C、D分别加上a、b、c、d。然后用下一分组数据继续运行算法,最后的输出是A、B、C和D的级联。

  当你按照我上面所说的方法实现MD5算法以后,你可以用以下几个信息对你做出来的程序作一个简单的测试,看看程序有没有错误。

  MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

  MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661

  MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72

  MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0

  MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b

  MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =

  d174ab98d277d9f5a5611c2c9f419d9f

 

  具体的一个MD5实现


PowerShell 对比两个文件夹的MD5不一致的文件 背景:不同环境的代码包,随着迭代更新,可能存在差异,这个时候需要解压之后,横向对比不同环境下的代码包,来调整业务或者查漏补缺,可以用此脚本实现。#Write-Host "文件名:$filePathB"$directoryA = ' ' # 修改为你的a目录路径。$directoryB = ' ' # 修改为你的b目录路径。# 获取目录A中的所有文件和子目录。# 获取目录B中的所有文件和子目录。# 遍历目录A中的所有文件和子目录。# 遍历目录B中的所有文件和子目录。# 比较两个哈希表中的哈希值。 阅读详情

相关推荐

MD5算法原理与实现

一、MD5概念 MD5,全名Message Digest Algorithm 5 ,中文名为消息摘要算法第五版,为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。上面这段话话引用自百度百科,我的理解MD5是一种信息摘要算法,主要是通过特定的hash散列方法将文本信息转换成简短的信息摘要,压缩+加密+hash算法的结合体,是绝对不可逆的。 二、MD5计算步骤

晓风残月xj 3万+

在PowerShell中计算文件哈希值:MD5与SHA-256的探索

哈希值是通过特定算法从数据中生成的固定长度的字符串。哈希算法的特点是:相同的输入总会产生相同的输出,而不同的输入则会产生不同的输出。MD5(Message Digest Algorithm 5)和SHA-256(Secure Hash Algorithm 256)是两种常用的哈希算法。其中,SHA-256相对于MD5来说,提供了更高的安全性。PowerShell是微软发布的任务自动化和配置管理框架,它包括命令行shell和脚本语言。

十年运维开发经验的王义杰在此分享自己的知识和经验 2445

使用Win10自带的PowerShell命令校验文件和镜像文件的Hash值(MD5、SHA1/256等)正确性

通常为了保证我们从网上下载的文件的完整性和可靠性,我们把文件下载下来以后都会校验一下MD5值或SHA1值(例如验证下载的Win10 ISO镜像是否为原始文件),这一般都需要借助专门的MD5检验工具来完成。Windows PowerShell命令可以校验的Hash值类型包括:SHA1、SHA256、SHA384、SHA512、MACTripleDES、MD5、RIPEMD160,暂不支持校验CRC32值。如果不带-Algorithm参数,也就是不指明验证的Hash值类型,那么默认验证的就是SHA256值。

夫君子之行,静以修身,俭以养德,非淡泊无以明志,非宁静无以致远. 5560

window获取文件的MD5值具体怎么操作

在 Windows 上,你可以通过几种方式来获取文件的 MD5 值。以下是使用 PowerShell 和第三方工具的两种常用方法。

qq_33192454的博客 8281

实践指南——【SPSS操作解析】线性混合效应模型在重复测量数据中的应用

本文详细解析了线性混合效应模型在重复测量数据分析中的应用,并提供了SPSS操作指南。文章阐述了该模型如何通过区分固定效应与随机效应,有效处理数据非独立性和缺失值问题,从而获得更可靠的统计推断。

oo7890的博客 551

VulnHub--mrrobot

Vulnhub靶场--Mr robot 靶机

记录笔记 1096

MD5(转自百度百科)

MD5(转自百度百科)   Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)...

EyeT Hexleo 185

避坑指南:海康MV_CC_SetIntValue接口的7个典型报错解决方案

本文深度解析海康工业相机SDK中MV_CC_SetIntValue接口的典型报错,提供7个实战解决方案。针对MV_E_CALLORDER、MV_E_PARAMETER等高频错误码,从设备状态、参数值域、依赖关系等核心约束入手,给出清晰的诊断流程与根治代码,帮助开发者构建健壮的参数设置模块,提升开发效率。

y2z3a4b5c的博客 1078

MD5加密算法(C语言实现,已编译,亲试可用~)

C语言实现MD5加密算法 本文有部分内容参考引用百度百科-MD5 。 MD5 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。 MD5将任意长度的“字节串”变换成128位(4个32位)的大整数,它是一个不可逆的数据转换过程。 MD5算法步骤 步骤1:补位 将原始数据转换为2进制看,先在末尾补一个1,再补0,再补一个64位的原始数据

小肥丸 1万+

MDK开发篇:基于立创逻辑派FPGA-G1与Cortex-M1软核的按键控制LED实战

本文详细介绍了基于立创逻辑派FPGA-G1开发板与高云Cortex-M1软核的完整开发流程。通过Gowin云源软件配置软核系统与GPIO外设,并在Keil MDK环境中编写按键控制LED的C程序,最终实现程序固化与上电自启动。教程涵盖硬件配置、软件开发、在线调试与固化部署全步骤,帮助STM32开发者快速上手FPGA软核开发。

weixin_42103128的博客 147

【东华大学oj】找到最大数(一维数组->中等)

一天,老师布置了一个作业,要求对一串数字各不相同的数字串进行排序,大的在前,小的在后。接着,我从数字串中的第二个数字开始往后找,找到最大的一个,然后与第二个数字交换,这样的话我就能够确定排序后数字串中的第二个数字;明明研究发现,他的这个想法中最重要的一环就是在一串数字中找到最大的那个,然后与第一个数字交换,可是明明毕竟刚刚开始学习程序设计不久,无法写出较复杂的程序,所以明明想让你这位程序设计专家帮他的忙,帮助他把这段核心程序写出来,然后明明只需模仿着写就可以了。时间限制: 1S类别: 一维数组->中等。

的博客 524

MD5算法的学习

MD5信息摘要算法(Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位的(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德v·李维斯特设计,与1992年公开,用以取代MD4算法。

mm 1522

MIPI CPHY学习笔记02:TX物理层一致性测试项解析(HS信令模式)第一部分

在手机、平板等移动设备中,MIPI C-PHY是连接相机、显示屏等高速外设的“数据高速公路”。高速(HS)信令模式就是这条公路的“快车道”,专门用于传输高清图像、视频等大容量数据,既要保证传输速率,又要维持信号稳定。物理层一致性测试是对这条“快车道”的全面质检,确保高速传输下数据不卡顿、不失真。今天我们聚焦MIPI C-PHY TX(发射端)的Group 2 HS信令测试,用通俗语言拆解22个核心测试项(含2个过时项),看懂高速信号的合格标准。

一只豌豆象的博客 288

MD5 算法实现(c++)

用c++实现了md5算法。包含 md5.h 和md5.cpp 两个文件。 主要参考百度百科 “MD5” 原理的描述:http://baike.baidu.cn/view/7636.htm,代码中变量命名也是参考其中的公式,程序的使用说明在md5.h 文件的末尾注释中。 测试结果和百度百科测试例子一致。 实现过程中需要注意事项:最后把四个变量A B C D 链接成结果时 ,注意变量高低位的先...

hulefei29的专栏 234

大模型微调部署实战及类GPT工具的高效使用

本文主要介绍了专栏《大模型微调部署实战及类GPT工具的高效使用》的核心内容,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 专栏亮点 3. 你的收获 4. 详细目录

herosunly的博客 22万+

python实现DoIP基本通信(收发报文)

python实现DoIP基本通信(收发报文)

天赐好车的博客 895

讲道理,MD5 到底是不是加密算法?

点击上方蓝字设为星标下面开始今天的学习~在回答这个问题之前,我们先分别来了解一下两个知识点:什么是 MD5 算法?什么是加密算法?一、MD5算法MD5 ...

程序员吴师兄的博客 9068

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java实现常用加密算法 —— MD5

在数据安全领域,MD5算法展现出了其独特的价值。通过比较数据的MD5哈希值,我们可以快速验证数据的完整性和真实性,而无需查看文件具体内容。这一特性使得MD5在文件校验、密码存储、数字前面等多个方面发挥着重要作用。本篇主要介绍MD5算法在Java(JDK1.8)中如何实现,借助Java标准库或第三方库,非原始实现,较为基础。

m0_46713218的博客 9514

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MD5退出历史舞台你知道吗?

MD5码是以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。大家看一下百度百科上面给出的流程图其实总的来说,MD5 就是对一个不变的数据进行加密,而加密之后的字符串也是不变的,只要对元数据哪怕做一个简单的字符修改,那么通过 MD5 加密之后的密码数据,都会对应的做出改变,就相当于是一个人的 “指纹”。/*** @param text明文* @param key密钥。

LoveSummer 3万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MD5算法说明【来自百度百科】

    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一 个任意长度

老高的博客 1074

MD5算法

MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算,得出结果。         MD5的具体实现好像有所区别,起码维基百科和百度百科的就不一样。但经过验证都是正确的,而这里采用的是维基百科的方法(http://zh.wikipedia.org/wiki/

Ederick的专栏 1209

MD5_百度百科

原文地址::http://baike.baidu.com/link?url=_1Zd_0SXAyoThmmBbvkhPE2YfoEuMSjtBqMbaHkXHbQy9BZgAE3yL3x8mLAQ07J0f2uiz3Ywn-QNYC1sBVwhDK 相关文章 1、MD5加密----http://baike.baidu.com/link?url=QtnDjovOIuvJVPej5

xqhrs232的专栏 650

MD5加密算法及其在Java中的使用

文中介绍了MD5算法的4种样式类型,MD5在Java中的三种实现与应用方式以及密码学中的加盐操作。

qq_38234015的博客 2897

MD5算法原理说明

来源---百度百科MD5 MD5算法实现: 输入:不定长度信息(要加密的信息) 输出:固定长度128-bits。由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。 基本方式为:求余、取余、调整长度、与链接变量进行循环运算。得出结果。 流程图: 1.填充 在MD5算法中,首先需要对输入信息进行填充,使其位长对512求余的结果等于448,

爱上在路上 4万+

MD5 到底是不是加密?

最近在做线上教学,感触很多。比如,备课比我想象的累多了,超级累,总想做得更好,一天到晚就是备呀备;比如,直播讲课和现场演讲的感觉很不一样,我第一次带着 100 个学员直播...

HenCoder 2万+

工具类—MD5简单介绍以及MD5工具类

2.MD5简单介绍: 1)MD5是什么鬼?: 答:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛 使用的一种散列函数,用以提供消息的完整性保护——摘自《百度百科》 简单点说就是一种加密算法,可以将一个字符串,或者文件,压缩包,执行MD5加密后, 就可以生产一个固定长度为128bit的串!这个串基本唯一!另外我们都知道:一个

此博客已停用,博文会逐渐转移到新地址,http://blog.youkuaiyun.com/liupeifeng3514 5501
上一篇: 小波情结[转载]
下一篇: sourceforge优秀项目介绍
starson7424
博客等级 码龄18年 7粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值