mirror of
https://github.com/emmansun/gmsm.git
synced 2025-05-14 04:56:21 +08:00
Updated SM2 MFMM (2) (markdown)
parent
cd4cf536de
commit
4367f73041
@ -563,3 +563,56 @@ $T_2=T_1 \ast O=Y \ast O= Y \ast 2^{256}-(Y \ast 2^{32}) \ast 2^{192} - Y \ast 2
|
||||
$T_3=T + T_2=t_4 \ast 2^{256} + t_3 \ast 2^{192} + t_2 \ast 2^{128} + t_1 \ast 2^{64} + t_0 + Y \ast 2^{256}-(Y \ast 2^{32}) \ast 2^{192} - Y \ast 2^{128} + (Y \ast O_1) \ast 2^{64} + (Y \ast O_0) $
|
||||
$T_3=(t_4+Y) \ast 2^{256}+(t_3 - Y \ast 2^{32}) \ast 2^{192} + (t_2 - Y) \ast 2^{128} + (t_1 + Y \ast O_1) \ast 2^{64} + (t_0 + Y \ast O_0) $
|
||||
|
||||
|
||||
先处理加法,后处理减法,后五个加法是带进位加法
|
||||
$t_0=t_0 + Y \ast O_0$
|
||||
$t_1=t_1 + Y \ast O_1$
|
||||
$t_2=t_2 + 0$
|
||||
$t_3=t_3 + 0$
|
||||
$t_4=t_4 + t_0$
|
||||
$t_5=0 + 0$
|
||||
|
||||
接着处理减法,假定a<sub>0</sub>是 $Y \ast 2^{32}$ 的低64位,a<sub>1</sub>是 $Y \ast 2^{32}$ 的高64位。后四个减法是带借位减法:
|
||||
$t_2=t_2 - Y$
|
||||
$t_3=t_3 - a_0$
|
||||
$t_4=t_4 - a_1$
|
||||
$t_5=t_5 - 0$
|
||||
|
||||
伪代码:
|
||||
```asm
|
||||
// First reduction step
|
||||
MOVQ acc0, AX
|
||||
MULQ p256ordK0<>(SB)
|
||||
MOVQ AX, t0
|
||||
|
||||
MOVQ p256ord<>+0x00(SB), AX
|
||||
MULQ t0
|
||||
ADDQ AX, acc0
|
||||
ADCQ $0, DX
|
||||
MOVQ DX, BX
|
||||
|
||||
MOVQ p256ord<>+0x08(SB), AX
|
||||
MULQ t0
|
||||
ADDQ BX, acc1
|
||||
ADCQ $0, DX
|
||||
ADDQ AX, acc1
|
||||
ADCQ DX, acc2
|
||||
ADCQ $0, acc3
|
||||
ADCQ t0, acc4
|
||||
ADCQ $0, acc5
|
||||
|
||||
MOVQ t0, AX
|
||||
MOVQ t0, DX
|
||||
SHLQ $32, AX
|
||||
SHRQ $32, DX
|
||||
|
||||
SUBQ t0, acc2
|
||||
SBBQ AX, acc3
|
||||
SBBQ DX, acc4
|
||||
SBBQ $0, acc5
|
||||
```
|
||||
乘法: 3
|
||||
移位:2
|
||||
加法:9
|
||||
减法:4
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user