_mm_aeskeygenassist_si128 硬件指令执行的操作

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

result[31:0] = SubWord(RotWord(temp)) xor Rcon;

result[63:32] = SubWord(RotWord(temp));

result[95:64] = SubWord(RotWord(temp)) xor Rcon;

result[127:96] = SubWord(RotWord(temp));

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

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

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

相关推荐
code_whiter2 小时前
C++1进阶(继承)
开发语言·c++
来恩10032 小时前
JSTL的标签库种类
java·开发语言
Miss_min2 小时前
128K长序列数据生成
开发语言·python·深度学习
小宋0013 小时前
QT中控件qss样式修改
开发语言·qt
图像僧3 小时前
vs2019中的属性页使用说明
java·开发语言·jvm
YOU OU3 小时前
SpringBoot 日志
java·开发语言
智者知已应修善业3 小时前
【51单片机LED闪烁10次数码管显示0-9】2023-12-14
c++·经验分享·笔记·算法·51单片机
智者知已应修善业3 小时前
【51单片机2按键控制1个敞亮LED灯闪烁和熄灭】2023-11-3
c++·经验分享·笔记·算法·51单片机
江南十四行3 小时前
并发编程(二)
java·开发语言
weixin_471383033 小时前
统一缩放单位基础(px、em、rem)
开发语言·javascript·ecmascript