登录
首页 >  Golang >  Go问答

计算Golang中NIST P256曲线上的零元素p256Zero31

来源:stackoverflow

时间:2024-02-27 23:21:26 112浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《计算Golang中NIST P256曲线上的零元素p256Zero31》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我们发现有预定义的

// p256Zero31 is 0 mod p.
var p256Zero31 = [p256Limbs]uint32{two31m3, two30m2, two31m2, two30p13m2, two31m2, two30m2, two31p24m2, two30m27m2, two31m2}

在 crypto/elliptic/p256.go 中。 p224.go 有类似的 var p224zeromodp31。请检查 p224.go 的参考资料。网址:https://www.imperialviolet.org/2010/12/04/ecc.html。我们也无法从减法部分找到“0 mod p”的详细信息。

我们还可以在openssl实现中找到这样的定义:https://github.com/openssl/openssl/blob/master/crypto/ec/ecp_nistp256.c

获得 p256zero31 的公式是什么?我计算了0x7ffff * p,它不等于p256zero31。 0x7ffff * p < p256zero31 < 0x80000 * p


解决方案


终于找到逻辑了

p256Zero31 = {two31,two30,two31,two30,two31,two30,two31,two30,two31} - {two31,two30,two31,two30,two31,two30,two31,two30,two31} mod P

并将 bigint 转换为肢体。

今天关于《计算Golang中NIST P256曲线上的零元素p256Zero31》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>