英特尔ISA允许我使用AES指令一起加密/解密一轮的所有4个步骤,或者在最后一轮中仅使用3个步骤。 唯一一个也有单独指令的步骤是InvMixColumn Transformation(AESIMC)。
为什么?我应该在哪些条件下单独使用此指令,然后单独使用AESDEC / AESDECLAST?
答案 0 :(得分:1)
AES-192(FIPS 197)时,您可以在密钥上应用指令。假设您的密钥在寄存器xmm2到xmm14中,如下所示:
aesimc xmm2, xmm2
aesimc xmm3, xmm3
aesimc xmm4, xmm4
...
aesimc xmm13, xmm13
aesimc xmm14, xmm14
这发生在aesdec之前。只要aesimc在与解密指令一起使用之前发生在寄存器上,指令也可以是相互混合的:
aesimc xmm14, xmm14
aesdec xmm1, xmm14
aesimc xmm13, xmm13
aesdec xmm1, xmm13
...
然而,首先完成这一切可能会更快,因为寄存器很容易用于aesdec指令。
仅供参考,说明文件说:
注意:AESIMC指令应该应用于扩展的AES轮密钥(第一个和最后一个轮密钥除外),以便使用“等效反向密码”(在FIPS 197中定义)准备解密。
来源:http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/aes-instructions-set-white-paper.pdf(搜索章节"代码示例")。