Cryptography 以ASN.1格式从导入的椭圆曲线密钥获取密钥参数

Cryptography 以ASN.1格式从导入的椭圆曲线密钥获取密钥参数,cryptography,asn.1,elliptic-curve,Cryptography,Asn.1,Elliptic Curve,我需要编写代码,以ASN.1格式获取作为输入的椭圆曲线密钥 接下来是输入字节数组: 308187020100301306072A8648CE3D0201006082A8648CE3D030107046D306B0201010420E699203AC5BCF36402EBD0AC9E8E21CC6FAD5828A61297EA7468FFF4B20A1440342000E05188A03EA81E853B9F6AC5F20DCA1CA828FD7CD5D92161FB2120C35EAC552EA

我需要编写代码,以ASN.1格式获取作为输入的椭圆曲线密钥

接下来是输入字节数组:

308187020100301306072A8648CE3D0201006082A8648CE3D030107046D306B0201010420E699203AC5BCF36402EBD0AC9E8E21CC6FAD5828A61297EA7468FFF4B20A1440342000E05188A03EA81E853B9F6AC5F20DCA1CA828FD7CD5D92161FB2120C35EAC552EAB07ED01A5101230C322DDFF95E239D606305BC908D161D71DE707F8

Online parser向我展示了下一个结构:

要想使用密钥,我需要从这个结构中获取
公共值X
公共值Y
私有值
,至少我这么认为。但我不知道怎么做

我已搜索了有关
对象标识符1.2.840.10045.2.1
对象标识符1.2.840.10045.3.1.7
的信息。我找到了。但是没有对ASN.1结构的字段进行描述


如何从导入的数据中获取所需的参数?

它通常被称为PKCS#8结构,即“私钥信息语法规范”。它只包含PKCS#8私钥的未加密部分

这就是:

算法标识符是

委员会:

哦,在DER中编码,您可能无法完全排除BER,这是一种定义更松散的结构,因此更难解析)。不幸的是,PKCS#8定义了BER

哦,是的,公钥是未压缩的点格式。不要忘记从位字符串中去掉
00

祝你愉快

PrivateKeyInfo ::= SEQUENCE {
    version Version,
    privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
    privateKey PrivateKey,
    attributes [0] Attributes OPTIONAL
}
AlgorithmIdentifier { ALGORITHM-IDENTIFIER:InfoObjectSet } ::= SEQUENCE {
    algorithm ALGORITHM-IDENTIFIER.&id({InfoObjectSet}),
    parameters ALGORITHM-IDENTIFIER.&Type({InfoObjectSet}
    {@algorithm}) OPTIONAL
}
ECPrivateKey ::= SEQUENCE {
    version        INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1),
    privateKey     OCTET STRING,
    parameters [0] ECParameters {{ NamedCurve }} OPTIONAL,
    publicKey  [1] BIT STRING OPTIONAL
}