MD5实验报告(word文档良心出品).docxVIP

  • 69
  • 0
  • 约3.18千字
  • 约 7页
  • 2021-01-29 发布于天津
  • 举报
一、MD5算法描述 MD5算法是计算机安全领域广泛使用的一种散列算法之一,用以 提供消息的完整性保护。 本次实验中, 对于输入的任意长度的一段数 据,输出唯一固定的128位MD5散列值。MD噂法分为以下步骤: 1 、初始化 ( 填充 ) 首先对于任意长度的消息, 将其按照 512 位进行分组, 为保证每 个分组都是 512 位,需要对消息进行填充。 填充方法是先在消息末尾 填一个1,再在后面填若干个0,使其长度I恰好满足I=448(mod512), 然后在其后附加上 64 位的( 填充前) 消息长度 , 确保不同的消息在填 充后不相同消息在填充后不相同。 其次将每个分组 512 位的数据划分为 16个 32 位的子分组,在实 现过程中,将其表示为 16 个 32 位整数进行运算。初始化四个 32 位 链接变量为: A=0B=0xefcdab89 C=0x98badcfe D=02、单步操作与主循环 MD5共分为4轮,每轮进行16步单步操作,MD5的单步操作如下 其中,gk(k=0,123)是每次运算中用到的非线性函数(每轮一个),用C 语言定义如下 ^define gO(b c,. d) ((bc) (、b赴d)) ftdefine gl (b, c d) ((bd) ) ffdef ine g2(b, cf d) (b e d) tfdef ine g3(b, cf d) (c (b d)) 数据块X[ d(i)]来自于初始化中分好的16个32位数据分组,根据循环 步数按以下置换函数选取(i表示循环的第i步) Pdefine rO(i) Pdefine rO(i) #define rl (i) Sdefine r2(i) Sdefine r3 (i) (i%16) (l+5*i)%16) ((5+3*i)%16) (7*i)%16) Ti是一些随机数序列,Ti的值如下(按顺序选取) unsigned int T .64.=: 0xd76aa478; 0xe8c7b756? Ox242070dL Oxclbdce-ee, 0xf57c0faf,0x4787c62aT 0xa8304613: 0xfd469501? 0x698098d8, 0x8b44f7af7 OxffffSbbl. 0x895cd7te7 0x6b90U22f 0xfd987193, 0x3679438^ 0x49b40821, Chf61u2562, OxcO4Ob34O, 0x265e5a51? Oxe^GcTaa, 0xd62fl05d. 0 0xd8ale68L? 0xe7d3fbc8? Ox21.elcde6, 0xc337O7d6T 0xf4d50d87r 0x455al4edf 0^a9e3e905,OxfcefaofS, 0x676f02d9. 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6旳d6122, 0xfM538(k, 0xa4beea44: 0x4bdecfa9? 0xf6bb4b60? Oxbebfbc7O? 0x289b7ec6: 0xeaaI27£aT 0s64ef3085: 0x04851 dO5? 0xd9d4d039, 0xe6db99e5? DxlfaSycfS, 0xc4ac56657 0xf4292244? 0x432aff97I 0xab9423a7J 0xfc93a039, 0x655b59c3, 0x8f0ccc92, Oxffeff47d. 0x85845ddl? 0x6faS7e4f, 0xfe2ce6e0, 0xa3014314? Ox4eO811al, Oxf7537eS2. 0xbd3af2o570x2ad7d2bb. 0xeb86d391? }; vvSi表示循环左移Si位,Si的数值如下(按顺序选取) unsigned int S[64]={ 7,12417, 22, 7,12f 17f 22, 7, 12,17, 22t 1, 12,17t 22, 5, 9,14, 20, 5, 9, 14, 20, 5, 9, 14,20, 5, 9,14, 20, 4, 11,16, 23, 4,11,16, 23, 4,11,16, 23* 4,11, 16, 23, 6,10,15, 21, 6,10,15, 21, 6F10,15, 21, 6, 10, 15, 21 }; 因此,MD5主要的一个单步操作可以表示为 a =b ((a f(b,c,d) T[i] X[J(i)])尺 S[i]) 四轮结64步主每轮16步结束后的4个 四轮结 64步主 束后的输入再加上初始值即得到最终结果 128位的散列值 循

文档评论(0)

1亿VIP精品文档

相关文档