如何从 DER 编码中获取 Qx 和 Qy EC_POINT
How to get Qx and Qy form DER Encoded EC_POINT
我在 nitro 密钥 hsm 上创建了一个 brainpool EC,并希望将其用于 .NET Framework 的加密操作,例如System.Security.Cryptography.ECDiffieHellman
.
我用 pkcs11-tool --list-objects
提取了 public 键,但只得到 一个值 ,EC_POINT。
那么,如何获取这个点的坐标呢?
DER 编码 EC_POINT
Public Key Object; EC EC_POINT 320 bits
EC_POINT: 0451040defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
EC_PARAMS: 06092b2403030208010109
label: Brainpool #1
ID: 10
Usage: verify
已解码EC_POINT
这个EC_POINT是DER编码的,我用this提取了EC_POINT的真值。
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
是你的public键。第一个字节表示它是一个未压缩的密钥(04
),这意味着其余字节的前半部分是X坐标,后半部分是Y坐标。
Qx = 0defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952d
Qy = a53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
http://www.secg.org/sec1-v2.pdf,第 2.3.4 节(Octet-String-to-Elliptic-Curve-Point Conversion)。
(并且由于参数 (06092b2403030208010109
) 是 DER-oid 1.3.36.3.3.2.8.1.1.9 (brainpoolP320r1) 一切看起来都是正确的,因为 Qx/Qy 是 320 位值)
我在 nitro 密钥 hsm 上创建了一个 brainpool EC,并希望将其用于 .NET Framework 的加密操作,例如System.Security.Cryptography.ECDiffieHellman
.
我用 pkcs11-tool --list-objects
提取了 public 键,但只得到 一个值 ,EC_POINT。
那么,如何获取这个点的坐标呢?
DER 编码 EC_POINT
Public Key Object; EC EC_POINT 320 bits
EC_POINT: 0451040defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
EC_PARAMS: 06092b2403030208010109
label: Brainpool #1
ID: 10
Usage: verify
已解码EC_POINT
这个EC_POINT是DER编码的,我用this提取了EC_POINT的真值。
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
是你的public键。第一个字节表示它是一个未压缩的密钥(04
),这意味着其余字节的前半部分是X坐标,后半部分是Y坐标。
Qx = 0defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952d
Qy = a53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598
http://www.secg.org/sec1-v2.pdf,第 2.3.4 节(Octet-String-to-Elliptic-Curve-Point Conversion)。
(并且由于参数 (06092b2403030208010109
) 是 DER-oid 1.3.36.3.3.2.8.1.1.9 (brainpoolP320r1) 一切看起来都是正确的,因为 Qx/Qy 是 320 位值)