Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将EC私钥从PEM转换为DER_Python_Cryptography_Public Key_Ecdsa - Fatal编程技术网

在python中将EC私钥从PEM转换为DER

在python中将EC私钥从PEM转换为DER,python,cryptography,public-key,ecdsa,Python,Cryptography,Public Key,Ecdsa,我正在尝试编写一个Python脚本,将PKCS8 PEM中的EC私钥转换为Python中使用的DER 我以前可以使用openssl这样做: openssl pkcs8 -nocrypt -in pem_key.p8 -out der_key.der -outform der 我通过执行以下操作来验证使用OpenSSL生成的DER文件是否正确: from ecdsa import SigningKey file = open('der_key.der', 'rb') SigningKey.fr

我正在尝试编写一个Python脚本,将PKCS8 PEM中的EC私钥转换为Python中使用的DER

我以前可以使用openssl这样做:

openssl pkcs8 -nocrypt -in pem_key.p8 -out der_key.der -outform der
我通过执行以下操作来验证使用OpenSSL生成的DER文件是否正确:

from ecdsa import SigningKey
file = open('der_key.der', 'rb')

SigningKey.from_der(file.read())

>>> <ecdsa.keys.SigningKey at 0x112bd3630>
但是,当使用上述相同方法测试此密钥插入编码时,我得到:

意外:在私钥开始时应为“1”,但得到0


我缺少什么?

尝试使用不同的格式,如
传统OpenSSL
。对我来说就是这样

pri_der = key.private_bytes(
    encoding=serialization.Encoding.DER,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption(),
)

这不适用于原始密钥,例如使用PyNaCL创建的密钥。
pri_der = key.private_bytes(
    encoding=serialization.Encoding.DER,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption(),
)