数据安全之散列函数(三)- MD4 算法原理详解

本文深入解析MD4算法,尽管已不再安全,但作为许多哈希算法的基础,理解其原理至关重要。MD4对任意长度数据生成128bit哈希值,通过初始向量、数据分块、常量定义和循环计算四个步骤进行处理。下篇将探讨MD5算法。
摘要由CSDN通过智能技术生成

MD5 是 Message-Digest Algorithm 信息摘要算法的简写,是一种无密钥的迭代 hash 算法。OpenJDK 中 MD5 的实现类 org.bouncycastle.crypto.digests.MD5Digest,《Handbook of Applied Cryptography》 这本书的第 346 - 347 对 MD5 算法进行了详细的描述。

Chapter 9 - Hash Functions and Data Integrity

MD4 算法详解

在介绍 MD5 之前我们首先来介绍下 MD4算法,虽然 MD4 算法已经不再安全,但是 MD4 算法是大部分 hash 算法的基础,MD5 也是在 MD4 算法的基础上做了一些优化而来的。
MD4 算法输入是任意长度的数据,得到的结果是 128bit 的哈希值。算法处理流程如下:
image.png

“2.预处理”部分我们在上一篇文章中已经讲了。数据安全之散列函数(二)- 数据分组与数据填充
MD4 每个分块分块大小为 512bit ,经过预处理后,会得到一组 512bit 长度的数据块 x 1 , x 2 . . . x n x_1,x_2...x_n x1,x2...xn
“3.迭代处理”部分的,就是循环将 x n x_n xn 和上一轮的结果进行计算得到新的结果。

初始向量(IV)

我们在第一轮计算的时候还没有上一轮的数据怎么办?这时候就要定义一组初始的数据,用于第一轮计算。这组数据就叫做初始向量(IV)。MD4 中定义如下,每个数据 32bit 总共 128bit:
h 1 = 0 x 67452301 h_1 = 0x67452301 h1=0x67452301,
h 2 = 0 x e f c d a b 89 h_2 = 0xefcdab89 h2=0xefcdab89,
h 3 = 0 x 98 b a d c f e h_3 = 0x98badcfe h3=0x98badcfe,
h 4 = 0 x 10325476 h_4 = 0x10325476 h4=0x10325476

数据分块

首先我们来看第一块 512bit 数据的操作。每一块数据被切分成 16 个 32bit 的小块。这 16 个 32bit 的数据我们定义为 X X X, 如 X [ 0 ] X[0] X[0]就代表下面第 0 块的数据。

定义常量

再来定义 3 组常量,后面计算中会用到:

  1. 定义 32-bit 附加值常量 y y y

y [ j ] = 0 , 0 ≤ j ≤ 15 y[j] = 0, 0 ≤ j ≤ 15 y[j]=0,0j15;

  • 31
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩Talk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值