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

相关推荐
2301_807997386 小时前
代码随想录-day30
数据结构·c++·算法·leetcode
猫头虎6 小时前
永久免费白嫖多个域名,一键托管Cloudflare,免费申请SSL加密证书,轻松建站、搭建线路伪装
服务器·开发语言·网络·数据库·python·网络协议·ssl
咔咔咔的7 小时前
3607. 电网维护
c++
无敌最俊朗@7 小时前
C++后端总览
开发语言
多喝开水少熬夜7 小时前
堆相关算法题基础-java实现
java·开发语言·算法
7澄17 小时前
Java 集合框架:List 体系与实现类深度解析
java·开发语言·vector·intellij-idea·集合·arraylist·linkedlist
mit6.8248 小时前
一些C++的学习资料备忘
开发语言·c++
Adellle8 小时前
Java中同步和异步的区别,以及阻塞和非阻塞的区别
java·开发语言
闲人编程8 小时前
用Python分析你的Spotify/网易云音乐听歌数据
开发语言·python·ai·数据分析·spotify·网易云·codecapsule
Js_cold8 小时前
(* MARK_DEBUG=“true“ *)
开发语言·fpga开发·debug·verilog·vivado