Alf*_*rez 5 python cryptography public-key ecdsa
我正在尝试编写一个 Python 脚本,以使用 Python 中的加密技术将 EC 私钥从 PKCS8 PEM 转换为 DER 。
我之前可以使用 openssl 执行此操作,如下所示:
openssl pkcs8 -nocrypt -in pem_key.p8 -out der_key.der -outform der
Run Code Online (Sandbox Code Playgroud)
我通过执行以下操作来验证使用 OpenSSL 生成的 DER 文件是否正确:
from ecdsa import SigningKey
file = open('der_key.der', 'rb')
SigningKey.from_der(file.read())
>>> <ecdsa.keys.SigningKey at 0x112bd3630>
Run Code Online (Sandbox Code Playgroud)
现在我尝试使用 Python 做同样的事情
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
pem_key_bytes = str.encode(pem_key)
key = serialization.load_pem_private_key(
pem_key_bytes, password=None, backend=default_backend()
)
pri_der = key.private_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
Run Code Online (Sandbox Code Playgroud)
然而,当使用上面相同的方法在 DER 编码中测试此密钥时,我得到:
UnexpectedDER:DER 私钥开始时预期为“1”,结果为 0
我缺少什么?
尝试使用不同的格式,例如TraditionalOpenSSL. 这对我来说是成功的。
pri_der = key.private_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption(),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2702 次 |
| 最近记录: |