Comments (3)
我从第三个问题开始回答:
三,首先这个除R的约简是通过不断加上tmp2数组最右(低)字(word)乘P来达成的,一次循环乘两次,虽然都是乘P,但是top half乘的是29 28 29 28 ... 这样位宽表示的P {0x1fffffff, 0xfffffff, 0x7f, 0xffffc00, 0x1fffffff, 0xfffffff, 0x1fffffff, 0xeffffff, 0xfffffff}
,而bottom half是乘的28 29 28 29... 这样位宽表示的P {0xfffffff, 0x1fffffff, 0x7f, 0x1ffff800, 0xfffffff, 0x1fffffff, 0xfffffff, 0x1dffffff, 0xfffffff}
,之所以这样是为了和tmp2中的每个word的位宽保持一致,这样方便把乘法表示成加减和位移运算。
二, 就是x 要乘以 0x1ffff800,而0x1ffff800表示成2^29 - 2^11,这是bottom half中乘以P的第四个word。
一,这里的position是指的bit表示的起始位置,参考方法开始部分的注释。
from gmsm.
我从第三个问题开始回答:
三,首先这个除R的约简是通过不断加上tmp2数组最右(低)字(word)乘P来达成的,一次循环乘两次,虽然都是乘P,但是top half乘的是29 28 29 28 ... 这样位宽表示的P
{0x1fffffff, 0xfffffff, 0x7f, 0xffffc00, 0x1fffffff, 0xfffffff, 0x1fffffff, 0xeffffff, 0xfffffff}
,而bottom half是乘的28 29 28 29... 这样位宽表示的P{0xfffffff, 0x1fffffff, 0x7f, 0x1ffff800, 0xfffffff, 0x1fffffff, 0xfffffff, 0x1dffffff, 0xfffffff}
,之所以这样是为了和tmp2中的每个word的位宽保持一致,这样方便把乘法表示成加减和位移运算。二, 就是x 要乘以 0x1ffff800,而0x1ffff800表示成2^29 - 2^11,这是bottom half中乘以P的第四个word。
感谢回复,基本上原理是懂得,但是一些实现的细节不是很清楚想问一下,方便留下一个联系方式(邮箱或者qq)吗?
from gmsm.
我已在本项目中开放discussions功能。
from gmsm.
Related Issues (20)
- sm2: provide NewPrivateKey & NewPublicKey avoid misapply HOT 1
- SM9 加密验证部分好像有问题 HOT 4
- skf usb 签名数据 gmsm验签 小疑问 HOT 6
- 希望能做更多的封装,让使用更方便一些。减少手工padding、创建cipher对象等重复工作。 HOT 1
- OpenSSL generated SM2 key throws error on parsing HOT 10
- internal/bignat: sync crypto/internal/bigmod: improve verify/encrypt performance
- result of ECB decryption is incomplete HOT 5
- [plugin] Failed to compile as go plugin at buildmode=plugin HOT 3
- [sync sdk] crypto/x509: implement AddCertWithConstraint HOT 2
- [go1.22] crypto/x509: add new OID type and use it in Certificate
- [go1.20] crypto/x509: add support for PKCS8/PKIX X25519 key encodings
- crypto/x509: implement SetFallbackRoots HOT 1
- [go1.21] crypto/x509: surface ReasonCode in RevocationList API
- 0.26 版本 再mac arm上编译不通过 HOT 1
- SM9测试用例数据来源 HOT 2
- sm3: 优化KDF性能-共享哈希Z的中间结果 HOT 1
- sm3: 优化KDF性能-基于SIMD的多路并行(四路) HOT 2
- sm3: 优化KDF性能-AMD64基于AVX2的8路并行 HOT 1
- sync x509 update HOT 2
- Something wrong about Key Gen or/and Curve check HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gmsm.