欢迎光临散文网 会员登陆 & 注册

摘要算法RIPEMD-160

2023-02-12 20:50 作者:CSDN首席喷子  | 我要投稿

RIPEMD-160是一个修改版本的MD4算法,能够生成20字节的摘要值,安全性基本等同于SHA-1(注意,SHA-1标准没有说K值是怎么确定的,这一点非常可疑)。RIPEMD-160可视为左右两个MD4并行计算,如果使用两个线程,性能不会有很大区别。

 

RIPEMD-160内部维护64字节的输入缓存,20字节的输出缓存、20字节左计算缓存、20字节右计算缓存、8字节计数器和1字节的输入计数器。计数器保存按位计算的输入数据填充前长度。输入数据必须经过填充,变成64字节整数倍余56字节长度,然后把8字节计数器按小端存储在最后面,此时长度为64字节的整数倍。(注意,一定要确定算法标准文档的大小端约定!)

 

随后对这些数据进行轮运算。首先定义5个算子F1~F5和移位运算ROL32:

左常数K1~5和右常数K_1~5:

左右变换移位量数组:

左右索引变换数组:

计算开始前,初始化输出缓存:

轮函数描述如下:

(1)将输出缓存H内容复制到左计算缓存P和右计算缓存P_中。

(2)对j=0:15,执行

(3)对j=16:31,执行

(4)对j=32:47,执行

(5)对j=48:63,执行

(6)对j=64:79,执行

(7)将计算结果加入原输出缓存。

(8)对所有512位数据组重复以上操作。

(9)输出20字节输出缓存H。

 

完整代码如下所示:


摘要算法RIPEMD-160的评论 (共 条)

分享到微博请遵守国家法律