mirror of
https://github.com/emmansun/gmsm.git
synced 2025-09-18 04:43:49 +08:00
Updated SM2 MFMM (2) (markdown)
parent
a3d2481bf1
commit
a3180f9b6e
@ -4,17 +4,25 @@ SM2 256 的素数P=0xfffffffeffffffffffffffffffffffffffffffff00000000fffffffffff
|
||||
|
||||
$$P = 2^{256} - 2^{224} - 2^{96} + 2^{64} - 1$$
|
||||
|
||||
$$P = 0xFFFFFFFEFFFFFFF \ast 2^{192} + 0xFFFFFFFFFFFFFFFFF \ast 2^{128} + 0xFFFFFFFF00000000 \ast 2^{64} + 0xFFFFFFFFFFFFFFFFF$$
|
||||
|
||||
$$P = 2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{128} + (2^{32} - 1) \ast 2^{64} + 1)$$
|
||||
|
||||
|
||||
## 平方的模约减优化
|
||||
### 方案一:(移位、加法、减法)
|
||||
假设:
|
||||
假设 $T=a^2$ :
|
||||
$T=t_7 \ast 2^{448} + t_6 \ast 2^{384} + t_5 \ast 2^{320} + t_4 \ast 2^{256} + t_3 \ast 2^{192} + t_2 \ast 2^{128} + t_1 \ast 2^{64} + t_0 $
|
||||
则共四次约减,第一次约减为:
|
||||
|
||||
则共四次约减,第一次约减为:
|
||||
$T_1=t_0$
|
||||
|
||||
### 方案一:(乘法、加法)
|
||||
这个是最原始方法。
|
||||
$T_2=T_1 \ast P=t_0 \ast P= (t_0 \ast 0xFFFFFFFEFFFFFFF) \ast 2^{192} + (t_0 \ast 0xFFFFFFFFFFFFFFFFF) \ast 2^{128} + (t_0 \ast 0xFFFFFFFF00000000) \ast 2^{64} + (t_0 \ast 0xFFFFFFFFFFFFFFFFF)$
|
||||
$T_3=T + T_2=t_7 \ast 2^{448} + t_6 \ast 2^{384} + t_5 \ast 2^{320} + t_4 \ast 2^{256} + (t_3+t_0 \ast 0xFFFFFFFEFFFFFFF) \ast 2^{192} + (t_2+t_0 \ast 0xFFFFFFFFFFFFFFFFF) \ast 2^{128} + (t_1+t_0 \ast 0xFFFFFFFF00000000) \ast 2^{64} + t_0 \ast 2^{64} $
|
||||
|
||||
$t_1=t_1 + t_0 \ast 0xFFFFFFFF00000001$
|
||||
|
||||
### 方案二:(移位、加法、减法)
|
||||
$T_2=T_1 \ast P=t_0 \ast P= t_0 \ast (2^{256}-(2^{32} \ast 2^{192} + 0 \ast 2^{128} + (2^{32} - 1) \ast 2^{64} + 1))$
|
||||
$T_2=t_0 \ast 2^{256} - t_0 \ast 2^{32} \ast 2^{192} - t_0 \ast (2^{32} - 1) \ast 2^{64} - t_0$
|
||||
|
||||
@ -34,4 +42,4 @@ $t_2=t_2 - a_1$
|
||||
$t_3=t_3 - a_0$
|
||||
$t_0=t_0 - a_1$
|
||||
|
||||
### 方案二
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user