2017-05-14 189 views
0

我在硝基密钥hsm上创建了一个brainpool EC,并希望将其用于.NET Framework的加密操作。 System.Security.Cryptography.ECDiffieHellman如何获得Qx和Qy格式DER编码EC_POINT

我用pkcs11-tool --list-objects提取了公钥但只得到一个值,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 

(或者这个JS脚本https://lapo.it/asn1js/#0451040DEFED7988B095679E5ACA422382D949C2E7FD937646DEF25CF7EB5140D41F12D077AC615773952DA53EFAD266C8642C6877B8B215D091BA687ACAFD3C33F35FFB5CA6AADAF248EF1A126CD55E0D0598

+0

是欧盟键对标记为可提取您的nitrokey? –

+0

Qx和Qy代表公钥。 –

回答

2
040defed7988b095679e5aca422382d949c2e7fd937646def25cf7 
eb5140d41f12d077ac615773952da53efad266c8642c6877b8b215 
d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598 

是您的公钥。第一个字节表示它是一个未压缩的键(04),这意味着其余字节的前半部分是X坐标,后半部分是Y坐标。

QX = 0defed7988b095679e5aca422382d949c2e7fd937646def25cf7eb5140d41f12d077ac615773952d

QY = a53efad266c8642c6877b8b215d091ba687acafd3c33f35ffb5ca6aadaf248ef1a126cd55e0d0598

http://www.secg.org/sec1-v2.pdf,第2.3.4节(字节串到椭圆曲线点转换)。

(而且因为参数(06092b2403030208010109)是DER-OID 1.3.36.3.3.2.8.1.1.9(brainpoolP320r1)一切看起来正确的,因为QX/QY是320位值)