Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在NIST P256 golang实施中计算p256Zero31?_Go_Elliptic Curve_Nist - Fatal编程技术网

如何在NIST P256 golang实施中计算p256Zero31?

如何在NIST P256 golang实施中计算p256Zero31?,go,elliptic-curve,nist,Go,Elliptic Curve,Nist,我们发现有两种方法 // p256Zero31 is 0 mod p. var p256Zero31 = [p256Limbs]uint32{two31m3, two30m2, two31m2, two30p13m2, two31m2, two30m2, two31p24m2, two30m27m2, two31m2} 在加密/椭圆/p256.go中。p224.go具有类似的变量p224ZeroModP31。每次检查p224.go中的参考。在我们也无法从减法部分中找到“0 mod p”的详细信

我们发现有两种方法

// p256Zero31 is 0 mod p.
var p256Zero31 = [p256Limbs]uint32{two31m3, two30m2, two31m2, two30p13m2, two31m2, two30m2, two31p24m2, two30m27m2, two31m2}
在加密/椭圆/p256.go中。p224.go具有类似的变量p224ZeroModP31。每次检查p224.go中的参考。在我们也无法从减法部分中找到“0 mod p”的详细信息

我们也可以在openssl实现中找到这样的定义:


得到p256Zero31的公式是什么?我计算了0x7ffff*p,它不等于p256Zero31。我终于找到了逻辑

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

并将bigInt转换为肢体。

“谁能给我一些关于这个魔法的线索?”不是一个问题陈述。如果你特别问“谁”,试着使用作者甚至可以直接回复的邮件列表。