Cryptography 以ASN.1格式从导入的椭圆曲线密钥获取密钥参数
我需要编写代码,以ASN.1格式获取作为输入的椭圆曲线密钥 接下来是输入字节数组: 308187020100301306072A8648CE3D0201006082A8648CE3D030107046D306B0201010420E699203AC5BCF36402EBD0AC9E8E21CC6FAD5828A61297EA7468FFF4B20A1440342000E05188A03EA81E853B9F6AC5F20DCA1CA828FD7CD5D92161FB2120C35EAC552EAB07ED01A5101230C322DDFF95E239D606305BC908D161D71DE707F8 Online parser向我展示了下一个结构: 要想使用密钥,我需要从这个结构中获取Cryptography 以ASN.1格式从导入的椭圆曲线密钥获取密钥参数,cryptography,asn.1,elliptic-curve,Cryptography,Asn.1,Elliptic Curve,我需要编写代码,以ASN.1格式获取作为输入的椭圆曲线密钥 接下来是输入字节数组: 308187020100301306072A8648CE3D0201006082A8648CE3D030107046D306B0201010420E699203AC5BCF36402EBD0AC9E8E21CC6FAD5828A61297EA7468FFF4B20A1440342000E05188A03EA81E853B9F6AC5F20DCA1CA828FD7CD5D92161FB2120C35EAC552EA
公共值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
}