首页/指令库/AES64KS2
AES64KS2

RISC-V AES64KS2 指令详解

指令手册R-type

AES密钥调度第二步(RV64):将rs1和rs2组合生成下一轮密钥(AES-192/256用)

指令语法

aes64ks2 rd, rs1, rs2
操作数说明
目标寄存器 rd:存放运算结果的通用寄存器。
源寄存器 rs1:第一个操作数寄存器。
源寄存器 rs2:第二个操作数寄存器。
ZkndZkne加密与密码

指令行为说明

aes64ks2 是 Zknd/Zkne 共用的 AES 密钥调度指令(仅 RV64)。它将 rs1 和 rs2 中的中间密钥状态组合,生成下一轮密钥的高 64 位或下一轮密钥状态。该指令用于 AES-192 和 AES-256 的密钥扩展过程。AES-128 不需要此指令(aes64ks1i 单独完成)。对于 AES-192/256,aes64ks1i 和 aes64ks2 需要交替使用。

快速理解与检索要点

AES64KS2 是 Zknd/Zkne 标量密码指令,AES 密钥调度 XOR 步骤。页面内容按官方标量密码扩展校对,避免把算法轮函数、密钥调度和寄存器来源混淆。

RV64 指令,执行 AES 密钥调度中额外的 key word XOR 组合步骤。
标量密码指令使用整数 X 寄存器,官方要求相关密码指令以数据无关执行延迟实现。
aes64* 形式只在 RV64 上定义。

常见使用场景

加密与密码

结合 «aes64ks2 a0, a1, a2» 等实际代码理解该场景。

密钥调度

结合 «aes64ks2 a0, a1, a2» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 R-type。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

仅适用于 RV64。AES-128 不需要此指令。
AES-192 和 AES-256 的密钥调度需交替使用 aes64ks1i 与 aes64ks2。
与 aes64ks1i 配合时需遵循正确的轮常量序列和轮密钥排列顺序。

常见问题

AES64KS2 使用浮点或向量寄存器吗?

不使用。标量密码扩展的这些指令使用整数 X 寄存器。

AES64KS2 是完整算法实现吗?

不是。它是 AES、SHA、SM3 或 SM4 中的一个低级步骤,软件仍需按算法顺序组合多条指令和轮常数/轮密钥。