欧洲密码杂凑算法RIPEMD-128
RIPEMD-128算法简介
MD4是最初出现的基于代数知识和布尔运算的杂凑函数。随着MD4的公开,出现了很多别的杂凑函数算法,包括MD5、HAVAL、RIPEMD-128、RIPEMD-160、SHA-0和SHA-1等等。他们中的绝大多数是基于MD4的设计准则而设计的。RIPEMD在EU工程RIPE上提出的,由H.Dorbbotin、A.Bosselaers和B.Preneel在1996年提出的,它是RIPEMD的改进版本其输出是128比特。
RIPEMD-128算法参数
RIPEMD-128算法支持的输入消息长度为不大于264比特,消息分块大小为512比特,压缩函数由步函数迭代64轮,输出杂凑值为128比特。
RIPEMD-128算法消息填充
消息填充算法如下:首先在消息后填充一个”1“,然后填充若干个”0“,使得填充后的消息长度是512的倍数。使得填充后的消息最后一个分组的长度是448比特,最后填充一个64比特的值b(是填充之前的消息的长度)。
RIPEMD-128算法的消息填充和消息分块操作与SHA256类似,详细细节参见这篇文章美国第2代哈希散列算法之SHA-256。
RIPEMD-128算法消息压缩
RIPEMD-128的链接变量初始值是:
![]()
RIPEMD-128的压缩函数包含操作1和操作2。
对任意长为512比特的消息分组M=(m0,…,m15),操作1的过程如下:

消息字的顺序如下图所示:

每步操作的移位如下图所示:

对任意长为512比特的消息分组M=(m0,…,m15),操作2的过程如下:

消息字的顺序如下图所示:

每步操作的移位如下图所示:

把操作1和操作2的输出相加:
a=b⊞cc⊞ddd,b=c⊞dd⊞aaa,c=d⊞aa⊞bbb,d=a⊞bb⊞ccc
如果M是最后一个消息分组,H(MM)=a||b||c||d是消息M的压缩值;否则,对下一个512比特的消息分组重复以上压缩过程,(a,b,c,d)作为输入。
RIPEMD-128算法步函数
RIPEMD-128的压缩函数把每一个长度为512比特的消息分组压缩为长度为128比特的压缩值,压缩函数包括两个平行的算法操作1和操作2,每个操作有4轮。每轮的圈函数如下:

压缩函数的每轮包含16步操作。如下图所示:

RIPEMD-128算法总结
RIPEMD-128是基于MD4设计的128位加密哈希函数,1996年由比利时鲁汶大学COSIC团队发布,用于修复原始RIPEMD的安全弱点。RIPEMD-128是过渡时期的MD5替代品,设计优于MD4/MD5,但128位输出在现代已不满足抗碰撞要求,仅因完整算法尚未公开攻破而在遗留系统中偶见,新系统应改用SHA-256或RIPEMD-160。
网硕互联帮助中心


评论前必须登录!
注册