Function core::arch::riscv64::sm3p1

source ·
pub fn sm3p1(x: u32) -> u32
🔬This is a nightly-only experimental API. (stdsimd #48556)
Available on RISC-V RV64 and target feature zksh only.
Expand description

SM3 哈希算法中使用的 P1 转换函数

该函数包含在 Zksh 扩展中。它被定义为:

P1(X) = X ⊕ (X ≪ 15) ⊕ (X ≪ 23)

其中 表示 32 位异或,≪ k 表示左移 k 位。

在 SM3 算法中,P1 转换用于扩展消息,其中扩展词 Wj 可以从前面的词生成。 整个过程可以用下面的伪代码来描述:

FOR j=16 TO 67
    Wj ← P1(Wj−16 ⊕ Wj−9 ⊕ (Wj−3 ≪ 15)) ⊕ (Wj−13 ≪ 7) ⊕ Wj−6
ENDFOR

根据 RISC-V Cryptography Extensions, Volume I,该指令的执行延迟必须始终独立于它所操作的数据。