md5不是对称密码算法_密码学中的消息摘要算法5(MD5)

md5不是对称密码算法

In cryptography, MD5 (Message-Digest algorithm 5) is a mainly used cryptographic hash function with a 128-bit hash value. As we use in an Internet standard (RFC 1321), MD5 has been employed or developed in a more variety of security applications and is also mainly used to check the integrity of files or the product. An MD5 hash is expressed as a 32 digit hexadecimal number in it.

在密码学中, MD5(消息摘要算法5)是主要使用的具有128位哈希值的密码哈希函数。 正如我们在Internet标准(RFC 1321)中使用的那样, MD5已在多种安全应用程序中使用或开发,并且还主要用于检查文件或产品的完整性。 MD5哈希表示为其中的32位十六进制数字。

MD5 is a strengthened or latest version of MD4. Similarly, like MD4, the MD5 hash was invented by "Professor Ronald Rivest" of MIT University. Also, MD5 was used as the model for SHA-1, since they sharing many common features between them. MD5 and SHA-1 are the two most mainly used hash algorithms nowadays, but the use of MD5 will certainly decline over time since it is now considered broken.

MD5是MD4的增强版本或最新版本。 类似地,像MD4一样,MD5哈希由麻省理工大学的“ Ronald Rivest教授”发明。 此外,由于MD5在SHA-1之间共享许多共同的功能,因此它们被用作SHA-1的模型。 MD5和SHA-1是当今两种最常用的哈希算法,但是MD5的使用肯定会随着时间的流逝而减少,因为现在认为它已被破坏。

算法 (The Algorithm)

The MD5 hash technique is described in "RFC 1321" along with a C implementation. MD5 is similar to the MD4 hash. The padding is identical.

MD5哈希技术与C实现一起在“ RFC 1321”中进行了描述。 MD5与MD4哈希类似。 填充是相同的。

MD5 works on 32-bit words. Let the required message to be implemented is "M".

MD5适用于32位字。 让所需的消息实现为“ M”。

The message "M" is padded so that its length in bits is similar to 448 modulo 512, that is, the padded message is less than 64 bits of multiple of 512.

填充消息“ M”,以便其长度(以位为单位)类似于448模512,即,填充的消息小于512的倍数的64位。

Firstly, the padding consists of a single 1 bit in the first column, followed by enough zeros to pad the message to the required length till the 512 bit. Padding is always used, even if the original length of M happens to equal 448 mod 512. As a result, there is at least one bit of padding, and at most 512 bits of padding. Then the length in bits of the message uses before padding is appended as a 64-bit block.

首先,填充由第一列中的单个1位组成,后跟足够的零以将消息填充至所需的长度,直到512位为止。 即使M的原始长度恰好等于448 mod 512,也始终使用填充。因此,至少有一位填充,最多512位填充。 然后,在填充之前将消息的长度(以位为单位)附加为64位块。

The padded message is a multiple of 512 bits and, it is also a multiple of 32 bits.

填充消息是512位的倍数,也是32位的倍数。

Let M be the required message and N is the number of 32-bit words used in the padded message. Due to the actual padding, N is a multiple of 16 bit.

令M为必填消息,N为填充消息中使用的32位字的数量。 由于实际的填充,N是16位的倍数。

MD5 (1)

There is a four-word buffer (A, B, C, D) is used to generate the message digest. Here each of A, B, C, D is a 32-bit buffer for a use. These buffer words are initialized to the following values in hexadecimal as follow,

有一个四字缓冲区(A,B,C,D)用于生成消息摘要。 在此,A,B,C,D中的每一个都是供使用的32位缓冲区。 这些缓冲字被初始化为以下十六进制值:


word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10

We first define the four auxiliary functions which use in the buffer that each takes as input three 32-bit words and produces as output one 32-bit word.

我们首先定义在缓冲区中使用的四个辅助功能,每个辅助功能将三个32位字作为输入并产生一个32位字作为输出。

MD5 (2)

here

MD5 (c) it is logical "and",
MD5 (b) is logical "xor".

这里

MD5(a) 它是逻辑“或”,并且

The uses of the four buffers (A, B, C, and D) are now combined with the words of the input using the four auxiliary functions (F, G, H and I). Here, there are four rounds, each involves 16 basic operations to perform. One operation is shown in the figure below,

现在,使用四个辅助功能(F,G,H和I)将四个缓冲区(A,B,C和D)的使用与输入的单词组合在一起。 在这里,有四个回合,每个回合涉及要执行的16个基本操作。 下图显示了一种操作,

MD5 (3)

The figure shows how the auxiliary function "F" is used to the four buffers (A, B, C, and D), using the message word "M(i)" and constant "K(i)." The item "<<<n" denotes a binary left shift by n bits.

该图显示了如何通过消息字“ M(i)”和常量“ K(i)”将辅助功能“ F”用于四个缓冲区(A,B,C和D)。 项目“ <<< n”表示二进制左移n位。

The output

输出

After we perform all rounds, the buffers A, B, C, and D contain the MD5 digest of the original input.

完成所有回合后,缓冲区A,B,C和D包含原始输入的MD5摘要。

Mainly, MD5 has five steps with four rounds of computations that compute the hash of the input value and gave the buffer output.

MD5主要具有五个步骤,其中包括四轮计算,这些运算计算输入值的哈希值并给出缓冲区输出。

References:

参考文献:

  • Md5 Hash

    Md5哈希

  • The MD5 Hashing Algorithm

    MD5哈希算法

翻译自: https://www.includehelp.com/cryptography/message-digest-algorithm-5-md5.aspx

md5不是对称密码算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 7 SID 修改

在安裝Windows系統時會產生一個獨一無二的SID (Security ID)&#xff0c;它用來識別每一部主機&#xff0c;若在同一個區域網路內有兩部相同SID的主機&#xff0c;會出現警告訊息。一般而言&#xff0c;每次安裝時的SID不可能會發生重複&#xff0c;但若是使用TrueImage或Ghost…

1 并发模型

并发系统可以采用多种并发编程模型来实现。并发模型指定了系统中的线程如何通过协作来完成分配给它们的作业。不同的并发模型采用不同的方式拆分作业&#xff0c;同时线程间的协作和交互方式也不相同。这篇并发模型教程将会较深入地介绍目前&#xff08;2015年&#xff0c;本文…

mysql log4jlogger_mybatis结合log4j打印SQL日志

mybatis结合log4j打印SQL日志1.Maven引用jar包默认的mybatis不能打印出SQL日志&#xff0c;不便于查看调试&#xff0c;须要结合log4jdbc-log4j2就能够完整的输入SQL的调试信息。pom.xml 配置maven。注意以下3个都须要org.bgee.log4jdbc-log4j2log4jdbc-log4j2-jdbc4.11.16org.…

cellpadding_在CSS中设置cellpadding和cellspacing

cellpaddingIntroduction: 介绍&#xff1a; It is not unknown anymore that now and then we make use of tables in our web page or website, therefore we all are familiar with how to create tables or grids in our website or web page but there are times when we…

mongodb 排序_技术分享 | MongoDB 一次排序超过内存限制的排查

本文目录&#xff1a;一、背景1. 配置参数检查2. 排序字段是否存在索引二、测试环境模拟索引对排序的影响1. 测试环境信息2. 报错语句的执行计划解释 3. 建立新的组合索引进行测试三、引申的组合索引问题1. 查询语句中&#xff0c;排序字段 _id 使用降序2. 查询语句中&#xff…

spark源码分析之Executor启动与任务提交篇

任务提交流程 概述 在阐明了Spark的Master的启动流程与Worker启动流程。接下继续执行的就是Worker上的Executor进程了&#xff0c;本文继续分析整个Executor的启动与任务提交流程Spark-submit 提交一个任务到集群通过的是Spark-submit通过启动脚本的方式启动它的主类&#xff0…

mysql 5.5.22.tar.gz_MySQL 5.5.22源码编译安装

MySQL 最新的版本都需要cmake编译安装&#xff0c;估计以后的版本也会采用这种方式&#xff0c;所以特地记录一下安装步骤及过程&#xff0c;以供参考。注意&#xff1a;此安装是默认CentOS下已经安装了最新工具包&#xff0c;比如GNU make, GCC, Perl, libncurses5-dev&#x…

利用python进行数据分析D2——ch03IPython

为无为,事无事,味无味。大小多少,报怨以德。图难于其易,为大于其细;天下难事必作于易,天下大事必作于细。——老子关于图片的例子&#xff1a;import matplotlib.pyplot as plt imgplt.imread(ch03/stinkbug.png) import pylab plt.imshow(img) pylab.show()结果&#xff1a;调…

mysql 视图 字典_MySQL深入01-SQL语言-数据字典-服务器变量-数据操作DML-视图

SQL语言的组成部分常见分类&#xff1a;DDL&#xff1a;数据定义语言DCL&#xff1a;数据控制语言&#xff0c;如授权DML&#xff1a;数据操作语言其它分类&#xff1a;完整性定义语言&#xff1a;DDL的一部分功能约束约束&#xff1a;包括主键&#xff0c;外键&#xff0c;唯一…

为什么我会被淘汰?

这是一个值得讨论的问题。华为前段时间也传出了大规模裁员的一些负面新闻&#xff0c;一时间搞的人心惶惶。总结起来说&#xff0c;还是怕失去这份赖以生存的工作&#xff0c;尤其是对于上有老下有小的中年人来说&#xff0c;工作尤为重要。 淘汰&#xff0c;是软件行业不变的真…

mysql 存储过程死循环_pl/sql存储过程loop死循环

今早&#xff0c;一个存储过程&#xff0c;写过很多次的存储过程&#xff0c;随手一写&#xff0c;各种报错&#xff0c;各种纠结&#xff0c;网上一搜&#xff0c;有好多个都遇到&#xff0c;论坛上给出的结局答案&#xff0c;今早&#xff0c;一个存储过程&#xff0c;写过很…

《Java学习指南》—— 1.4 设计安全

本节书摘来异步社区《Java学习指南》一书中的第1章&#xff0c;第1.4节&#xff0c;作者&#xff1a;【美】Patrick Niemeyer , Daniel Leuck&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.4 设计安全 Java被设计为一种安全语言&#xff0c;对于这一事实…

ppython_Python pcom包_程序模块 - PyPI - Python中文网

PCOM在python中一个非常基本的unitronics pcom协议实现。如何使用from pcom import commandsfrom pcom.plc import EthernetPlcwith EthernetPlc(address(192.168.5.43, 1616)) as plc:# Read realtime clockc commands.ReadRtc()res plc.send(c)print(res)# Set realtime cl…

《软件定义数据中心:Windows Server SDDC技术与实践》——导读

前言 通过对自身的审视和对身边IT 技术专家的观察&#xff0c;我发现对于我们来说&#xff0c;掌握一项新的技术或熟悉一个新的产品&#xff0c;大都是闻而后知&#xff0c;知而后学&#xff0c;学以致用&#xff0c;用以知其然。然而Windows Server作为一个简单的、易上手的操…

《Spark核心技术与高级应用》——3.2节构建Spark的开发环境

本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第3章&#xff0c;第3.2节构建Spark的开发环境&#xff0c;作者于俊 向海 代其锋 马海平&#xff0c;更多章节内容可以访问云栖社区“华章社区”公众号查看 3.2 构建Spark的开发环境无论Windows或Linux操作系统&am…

webapi随机调用_BeetleX之webapi验证插件JWT集成

对于webapi服务应用很多时候需要制订访问限制&#xff0c;在前面的章节也讲述了组件如何制订控制器访问控制&#xff1b;但到了实际应用要自己去编写还是比较麻烦。为了让访问控制更方便组件实现基于JWT的控制器访问控制组件BeetleX.FastHttpApi.Jwt&#xff1b;通过这个组件可…

《驯狮记——Mac OS X 10.8 Mountain Lion使用手册》——2.3 Dock

本节书摘来自异步社区《驯狮记——Mac OS X 10.8 Mountain Lion使用手册》一书中的第2章&#xff0c;第2.3节&#xff0c;作者&#xff1a;陈明 , 张铮 , 马玉龙著&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 Dock 驯狮记——Mac OS X 10.8 Mountain…

mysql 嵌套if标签_对比Excel、MySQL、Python,分别讲述 “if函数” 的使用原理!

作者&#xff1a;黄伟呢本文转自&#xff1a;数据分析与统计学之美其实&#xff0c;不管是Excel、MySQL&#xff0c;还是Python&#xff0c;“if”条件判断都起着很重要的作用。今天这篇文章&#xff0c;就带着大家盘点一下&#xff0c;这三种语言如何分别使用 “if函数” 。if…

R语言数据挖掘

数据分析与决策技术丛书 R语言数据挖掘 Learning Data Mining with R &#xff3b;哈萨克斯坦&#xff3d;贝特麦克哈贝尔&#xff08;Bater Makhabel&#xff09; 著 李洪成 许金炜 段力辉 译 图书在版编目&#xff08;CIP&#xff09;数据 R语言数据挖掘 / &#xff08;哈…

vue2.0的学习

vue-router 除了使用 <router-link> 创建 a 标签来定义导航链接&#xff0c;我们还可以借助 router 的实例方法&#xff0c;通过编写代码来实现。 1&#xff09;router.push(location) 这个方法会向 history 栈添加一个新的记录&#xff0c;所以&#xff0c;当用户点击浏…