【密码学】一文读懂Whirlpool

简介: 首先呢,祝大家今晚节日快乐,Whirlpool是由Vincent Rijmen(高级加密标准的联合创始人)和Paulo S.L.M.Barreto设计的,后者于2000年首次提出了它。

【密码学】一文读懂Whirlpool


MRUMEQ5BRB)OTI)`64B8XGX.jpgWhirlpool

首先呢,祝大家今晚节日快乐,Whirlpool是由Vincent Rijmen(高级加密标准的联合创始人)和Paulo S.L.M.Barreto设计的,后者于2000年首次提出了它。


算法结构

下面我们来看一下Whirlpool算法的结构,图片参考自(https://www2.seas.gwu.edu/~poorvi/Classes/CS381_2007/Whirlpool.pdf)当中的结构图。

6EIEMXHW6KN]X9BOAP{XJ}U.png

image.gif

消息填充

这一步和之前我们提到过的其他的哈希算法类似,我们需要把原始的消息内容填充到512的整数倍,这里至少要填充1个字节,也就是说,如果说原始的消息恰好是512的整数倍的话,那么我们需要额外多填充一个分块,也就是填充10...0这里填充长度为256bit。

长度填充

这里在结尾需要填充256bit的消息长度,从这里可以看出,whirlpool算法最大的处理消息的长度为 的消息。

初始化矩阵

对于这里的状态,采用了一个 的一个矩阵来处理消息,初始化的值为0。

消息处理

这里是整个哈希算法的核心,我们需要根据之前填充完成的数据,按照512bit一组进行分块,分块完成之后,根据每一块执行W算法进行处理,最终得到结果。


W函数

这个W函数,和我们之前所讲到过的AES算法有一些类似的地方,我们先来介绍W算法的具体过程,然后再来对比一下他和AES的异同。

(KT)HL408DP5U_YHQZLX2]T.png

轮密钥加

这里和AES实际上是基本一样的,同样的是在 上面的加法运算,只不过所选择的不可约多项式不同,不过这个不可约多项式对于加法运算是没有影响的,在乘法运算当中才会有差异。

字节替代

这里也是通过去查询SBOX来获取最终的值,不熟悉的读者可以自行回顾一下AES当中有关字节替代的计算方法。

列移位

这里为什么变成了列移位呢,因为这里最开始生成初始化矩阵的时候,我们用的是行矩阵,这里和AES有一些不同,在AES当中,我们初始化矩阵用的是列矩阵,从这个角度来说,这里实际上和AES的应该也不大。

行混淆

这一步是和AES加密算法相差比较大的一步,因为前面提到过,这里在有限域计算上面的不可约多项式改变了,因此呢对于乘法运算还是有蛮大的影响的,结果就是我们不能用之前AES当中的方法进行计算了,这里行混淆依然用的是一个矩阵的乘法,具体的变换矩阵如下:

image.png

这里采用的不可约多项式为 image.png


密钥扩展算法

这里的密钥扩展算法并不和AES一样,需要预计算出来,而是在算法的运行过程当中,利用上一步的输出作为新的密钥扩展的值,在最上面的图当中展示了这一步的过程。


总结

最后,今天521,我这里就不给出代码了,祝大家今天节日快乐,逃~~。

相关文章
|
Web App开发 Rust 算法
【密码学】一文读懂ChaCha20
好久没写新的加密算法的原理了, 这次所选取的加密算法结构比较简单, 一起来看一下吧。
10430 154
【密码学】一文读懂ChaCha20
|
3月前
|
人工智能 安全 机器人
终于有人帮你整理好了,火爆的“系统级提示词”支持ChatGPT、Claude、Gemini、xAI的
小华同学带你探索AI前沿!每日分享高效工具与开源技术,揭秘大模型系统提示词(System Prompts)的隐藏规则。通过 `system_prompts_leaks` 仓库,学习ChatGPT、Claude等主流AI的底层设定,掌握Prompt工程与安全攻防,助你打造专业级AI应用,提升效率50%以上!
682 0
|
算法 安全 物联网
关于SM2、SM3、SM4、SM9这四种国密算法
本文介绍了四种国密算法——SM2、SM3、SM4和SM9。SM2是一种基于椭圆曲线的非对称加密算法,用于数据加密和数字签名;SM3是哈希算法,用于数字签名和消息完整性验证;SM4是对称加密算法,用于数据加密和解密;SM9是基于标识的非对称密码算法,适用于物联网环境中的数据安全和隐私保护。
10442 121
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
1022 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
JavaScript 开发工具 git
保姆级教程:从零构建GitHub Pages静态网站(下)
保姆级教程:从零构建GitHub Pages静态网站(下)
959 0
|
存储 自然语言处理 搜索推荐
外汇CRM系统的关键特点及功能解析
Zoho CRM外汇系统提供全面客户管理,涵盖信息记录、交易历史等,提升个性化服务水平。系统界面直观易用,支持自定义,数据分析实时,助决策精准。具备高安全性,多系统整合能力强,自动化功能提高效率,支持多语言,适用于全球市场,配备专业客户支持与培训,助力外汇企业优化流程,增强客户满意度,在竞争中领先。
317 1
|
编译器 存储 网络协议
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
1681 1
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
|
算法 Java 数据挖掘
使用MeanShift算法进行图像分割的实现
使用MeanShift算法进行图像分割的实现
|
机器学习/深度学习 人工智能 安全
SentinelOne监测中隔离的文件,人工如何取消隔离
SentinelOne 的 Agent 在终端设备上实时监测系统的活动,包括文件操作、网络通信、内存访问等, SentinelOne 使用人工智能和机器学习技术对监测到的活动进行行为分析,识别潜在的威胁,包括已知的恶意软件和未知的零日攻击。 基于行为分析和实时监测,SentinelOne 快速识别出可能的威胁,并进行准确的威胁分类,包括病毒、勒索软件、恶意脚本等。 SentinelOne 可以自动采取响应措施,如隔离受感染的设备、终止恶意进程、删除恶意文件等,以尽快减轻威胁带来的影响。当技术人员发现隔离的文件没有危害时,可以手动隔离。文章阐述了怎么手动撤销的过程。
2300 0
SentinelOne监测中隔离的文件,人工如何取消隔离
|
存储 Java Shell
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 设置环境变量setenv命令 使用指南
【Shell 命令集合 系统设置 】⭐⭐⭐Linux 设置环境变量setenv命令 使用指南
968 0