我尝试将 ECKey ( http://www.win.tue.nl/pinpasjc/docs/apis/jc222/javacard/security/ECKey.html ) 与 NIST 在 Java 卡上定义的 P-256 曲线一起使用:
Curve P-256
p = 115792089210356248762697446949407573530086143415290314195533631308867097853951
r = 115792089210356248762697446949407573529996955224135760342422259061068512044369
s = c49d3608 86e70493 6a6678e1 139d26b7 819f7e90
c = 7efba166 2985be94 03cb055c 75d4f7e0 ce8d84a9 c5114abc af317768 0104fa0d
b = 5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b
Gx = 6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296
Gy = 4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5
y²= x³ -3x + b (mod p)
据我了解,我使用
- p 为 setFieldFP(),素数 p 对应于字段 GF(p)
- r 代表 setR(),曲线不动点 G 的阶数,
- b 对于 setB(),曲线的第二个系数,
- 用于 setG() 的 Gx 和 Gy,曲线的固定点(在将它们编码为 ANSI X9.62 之后),
- 不动点 G 阶的辅因子为 1,所以 setK(1)
系数 A 为 -3(根据曲线的定义)。但是我如何编码-3(作为一个字节[]),以便我可以用setA()设置它?