mirror of
https://github.com/emmansun/gmsm.git
synced 2025-05-10 19:16:18 +08:00
Updated Home (markdown)
parent
ee38023570
commit
faadadeac2
4
Home.md
4
Home.md
@ -3,3 +3,7 @@
|
|||||||
通过阅读Golang NIST P256那个generic的源码,并且比较NIST P256和SM2 256曲线参数的异同,逐步尝试。
|
通过阅读Golang NIST P256那个generic的源码,并且比较NIST P256和SM2 256曲线参数的异同,逐步尝试。
|
||||||
* 首先,我要替换掉p256.go中的所有常量,这个过程中遇到的最大难点在于**p256Zero31**的求解。
|
* 首先,我要替换掉p256.go中的所有常量,这个过程中遇到的最大难点在于**p256Zero31**的求解。
|
||||||
* 其次, 开始解决加法(p256Sum)和减法(p256Diff)的正确性,其难点在于解决进位问题(p256ReduceCarry)
|
* 其次, 开始解决加法(p256Sum)和减法(p256Diff)的正确性,其难点在于解决进位问题(p256ReduceCarry)
|
||||||
|
* 然后就是解决乘法(p256Mul)的正确性,其最大难点在于蒙哥马利约简实现(p256ReduceDegree),这个花费了很多时间,也是和那个“神兽护体”实现的最大不同。
|
||||||
|
* 最后就是求模P的乘法逆元(p256Invert),基于费马小定理(Fermat's Little Theorem),这个就是用平方和乘法算出a^{p-2} = a^{-1} (mod p),关键是凑出p-2。
|
||||||
|
|
||||||
|
我保留了那些如何求取那些常量和预计算的函数在p256.go中而没有删除,供后来者参考。
|
||||||
|
Loading…
x
Reference in New Issue
Block a user