【发布时间】:2011-06-04 07:49:21
【问题描述】:
大家好 我正在尝试构建一个代码来演示在程序集中进行 AES 加密。最新的英特尔手册有
AESENC xmm1,xmm2/m128 — 执行一轮 AES 加密流轮密钥 来自第二个源操作数,对来自第一个源操作数的 128 位数据(状态)进行操作 源操作数,并将结果存储在目标操作数中。
AESENCLAST xmm1, xmm2/m128 — 执行最后一轮 AES 加密流程 圆键 来自第二个源操作数,对来自第一个源操作数的 128 位数据(状态)进行操作 源操作数,并将结果存储在目标操作数中。
AESKEYGENASSIST xmm1, xmm2/m128, imm8 帮助扩展 AES 密码密钥,通过计算步骤来生成 用于加密的轮密钥,使用源操作数中指定的 128 位数据和 指定为立即数的 8 位舍入常量,将结果存储在目标中 操作数。
为此,我将尝试内联汇编,我将构建它以将速度与在 C 中完成的普通 AES 进行比较!我的第一次头脑风暴让我思考如何在内联汇编中使用 xmm 欢迎任何关于我的问题或一般想法的帮助/集思广益/分享想法 干杯=)
【问题讨论】:
-
我宁愿在汇编中编写 COBOL 编译器,也不愿在汇编中编写任何密码学。
-
@SanJacint:密码学是手工组装确实是个好主意的少数用例之一。它是需要高性能的简短、定义明确的代码。如果是 AES,甚至还有特殊说明。
-
FWIW 威盛处理器上的 PadLock (xcrypt*) 指令也支持 AES 算法,并且已经存在比英特尔的扩展更长的时间,那里有更多的基准材料。
-
那么到底是什么问题?
-
@San:如果不是专门的英特尔 insns,我不会去那里,但 AES 是英特尔有专用宏操作的特殊情况,而且在组装时它应该更快
标签: c security inline-assembly aes