_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。

相关推荐
一只理智毅3 分钟前
copy-and-swap语义
c++
芒果快进我嘴里9 分钟前
C++打印乘法口诀表
开发语言·c++
14 分钟前
Lua基础复习之Lua元表
开发语言·lua
可能是猫猫人24 分钟前
【Python打卡Day39】图像数据与显存 @浙大疏锦行
开发语言·python
爬虫程序猿24 分钟前
利用 Python 爬虫获取 Amazon 商品详情:实战指南
开发语言·爬虫·python
_w_z_j_28 分钟前
C++----剖析stack、queue
开发语言·c++
电院工程师35 分钟前
2.4 Python基础概念:通过一个文字冒险游戏学习编程
开发语言·python·学习·算法·游戏·游戏程序
设计师小聂!40 分钟前
vue3 - 自定义hook
开发语言·javascript·ecmascript
风起云涌~42 分钟前
【Java】BlockQueue
java·开发语言
猫头虎1 小时前
【Python系列PyCharm实战】ModuleNotFoundError: No module named ‘sklearn’ 系列Bug解决方案大全
android·开发语言·python·pycharm·bug·database·sklearn