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

相关推荐
初次见面我叫泰隆13 小时前
Qt——4、Qt窗口
开发语言·qt·客户端开发
瑞雪兆丰年兮13 小时前
[从0开始学Java|第十一天]学生管理系统
java·开发语言
txinyu的博客13 小时前
解析muduo源码之 Buffer.h & Buffer.cc
c++
代码AI弗森13 小时前
Git Bash 与 PowerShell:定位差异、使用场景与选择建议
开发语言·git·bash
阿猿收手吧!13 小时前
【C++】异常处理:catch块执行后程序如何继续
服务器·网络·c++
代码游侠14 小时前
C语言核心概念复习(一)
c语言·开发语言·c++·笔记·学习
Once_day14 小时前
C++之《Effective C++》读书总结(3)
c语言·c++
蜕变的土豆14 小时前
grpc-通关速成
开发语言·c++
-To be number.wan14 小时前
Python数据分析:英国电商销售数据实战
开发语言·python·数据分析
xb113214 小时前
C#生产者-消费者模式
开发语言·c#