_mm_aeskeygenassist_si128 硬件指令执行的操作

根据Intel的文档,`_mm_aeskeygenassist_si128` 指令执行以下操作:

result31:0 = SubWord(RotWord(temp)) xor Rcon;

result63:32 = SubWord(RotWord(temp));

result95:64 = SubWord(RotWord(temp)) xor Rcon;

result127:96 = SubWord(RotWord(temp));

其中,temp是输入寄存器的32位部分,实际上,该指令将输入分成两个64位部分,对每个64位部分的高32位进行RotWord和SubWord,然后与轮常数异或(对于第一个和第三个32位块),然后复制到输出寄存器的相应位置。

在AES-256的密钥扩展中,我们通常使用该指令生成一个中间值,然后与之前的轮密钥异或。

而 shuffle 操作是为了将这个中间值调整为正确的形式。在代码中,我们使用了0xFF和0xAA。

相关推荐
牛奔14 小时前
Go 如何打印调试深层或嵌套的结构体
开发语言·后端·golang
geovindu15 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
学逆向的15 小时前
汇编——JCC指令
开发语言·汇编·网络安全
mayaairi16 小时前
JS循环语句深度解析:嵌套for、while与do...while
开发语言·前端·javascript
kite012116 小时前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
hold?fish:palm17 小时前
kv存储主从复制的设计与实现
c++·redis·后端
l1564694818 小时前
突围!图文混合知识库难以解析,Kimi-K3 原生视觉架构深耕知识工作,DMXAPI 统一接口,缩短项目开发周期
java·大数据·开发语言
啦啦啦啦啦zzzz18 小时前
算法:贪心算法
c++·算法·leetcode·贪心算法
charlie11451419118 小时前
现代C++工程实践 WeakPtr 实战(三):WeakPtrFactory 与「最后成员」惯用法
开发语言·c++·开源项目·现代c++
IT小盘20 小时前
04-大模型流式输出原理-SSE与Python实现
开发语言·网络·人工智能·python