早教吧 育儿知识 作业答案 考试题库 百科 知识分享

MD5的实现1.问题描述MD5以512比特一块的方式处理输入的消息文本,每个块又划分为十六个32比特的子块。算法的输出由四个32比特的块组成,将它们级联成一个128比特的Hash值。①首先填充

题目详情
MD5的实现
1.问题描述
MD5以512比特一块的方式处理输入的消息文本,每个块又划分为十六个32比特的子块。算法的输出由四个32比特的块组成,将它们级联成一个128比特的Hash值。
①首先填充消息使填充后的长度恰好为一个比512的倍数小64的数。填充方法是附一个“1”在消息后面,再补多个“0”。然后,在其后附上64比特的消息长度(填充前)的二进制表示。算法中使用了四个32比特的变量A、B、C、D,先把这四个变量初始化为:
A=01234567,B=89ABCDEF,C=FEDCBA98,D=76543210
称它们为链接变量。
3 接着进行算法的主循环,循环的次数是消息中512比特的块的数目。
将上面四个变量复制到另外的变量中:A到AA,B到BB,C到CC,D到DD。
主循环有四轮, 每一轮由16次操作组成。F、G、H、I函数,FF、GG、HH、II四种操作详见教材P116-P118。所有这些步骤进行完之后,将A、B、C、D分别加上AA、BB、CC、DD,然后用下一块数据继续进行算法。
③最后的输出是A、B、C、D的级联。
2.基本要求
以MD5(x)的形式实现,x为01串。
3. 实现提示
注意消息文本、各种变量的类型及其类型转换。














▼优质解答
答案和解析
如下代码是md5的一个简单实现,md5_encode函数接收一个文件名,计算该文件的16进制的md5值,要改成你的需求,只需输入输出改一下即可,函数最后计算出的A、B、C、D既是要求的值,要注意的是,这里为了简便,利用了硬...
看了 MD5的实现1.问题描述MD...的网友还看了以下:

下面的6个字用哪种查字法法最方便,把它们分别填入相应的格子里,每种查字法限选两法最方便,把它们分别  2020-04-25 …

有两个长,宽,高分别为7厘米,9厘米,11厘米;5厘米,7厘米,9厘米的长方体,分别将它们表面涂上  2020-05-16 …

(1)写出四个连续的正整数,使得它们中的每一个都是某个不为1的完全平方数的倍数,并指出它们分别是哪  2020-06-13 …

(人教版小学六年级下册基训练习十九2)小明,小红和小亮做一个小实验.他们分别从一个长10cm宽8c  2020-06-14 …

5、3个长方体鱼缸,它们的三个棱长都是4分米、5分米、6分米,且以不同的棱长组合鱼缸的底,每个鱼缸  2020-06-30 …

方方和圆圆的房间窗帘的装饰物如图所示,它们分别由两个四分之一圆和四个半圆组成(半径都分别相同),它  2020-07-04 …

近似数还有一题是有理数的1.0.025有()个有效数字,它们分别是()1.320有()个有效数字,  2020-07-31 …

将8分为两正数之和、使他们的立方和最小、则他们为?(用导数求解)我建立了他们的方程,X的立方+(8  2020-07-31 …

质量相同的甲乙两实心球,密度分别为6x10的三次方千克每立方米和12x10的三次方千克每立方米,现把  2020-10-31 …

一块长方形铁皮长是2分米,宽16厘米,要把他们的四个角分别剪去边长是2厘米的正方形,拜托各位大神一块  2020-11-08 …