Intel ISA允许我使用AES指令一起对一轮的所有4个步骤进行加密/解密,或者在最后一轮中仅对其中3个进行加密/解密。唯一具有单独指令的步骤是InvMixColumn Transformation(AESIMC)。
为什么?在哪种条件下,我应该分别使用AESDEC / AESDECLAST?]
当执行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(搜索“代码示例”一章。)>