You need to enable JavaScript to run this app. 如何在Python中将PEM格式EC私钥转换为代码友好的二进制表示
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将PEM格式EC私钥转换为代码友好的二进制表示

解决方案

不需要对openssl命令行做封装调用,使用cryptography库即可原生实现该需求,步骤如下:

  1. 先安装依赖库
pip install cryptography
  1. 完整实现代码
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend

def pem_ec_privkey_to_code_format(pem_file_path, password: bytes = None):
    # 读取PEM格式私钥文件
    with open(pem_file_path, "rb") as f:
        pem_content = f.read()
    
    # 反序列化加载私钥对象
    ec_privkey = serialization.load_pem_private_key(
        pem_content,
        password=password,
        backend=default_backend()
    )
    
    # 提取原始私钥值,转换为对应长度的大端字节
    privkey_raw_bytes = ec_privkey.private_numbers().private_value.to_bytes(
        length=ec_privkey.curve.key_size // 8,
        byteorder="big"
    )
    
    # 格式化为0xXX逗号分隔的代码友好格式
    return ", ".join([f"0x{byte_val:02X}" for byte_val in privkey_raw_bytes])

# 调用示例
if __name__ == "__main__":
    # 无密码私钥直接调用
    output = pem_ec_privkey_to_code_format("ec_private.pem")
    print(output)
    # 有密码的私钥调用示例:pem_ec_privkey_to_code_format("ec_private.pem", password=b"your_password")

效果说明

针对你提供的openssl输出示例,运行上述代码会直接输出符合要求的格式:
0x7A, 0xF6, 0x73, 0x2F, 0x58, 0x1D, 0x00, 0x5A, 0xFC, 0xF2, 0x16, 0xF6, 0x38, 0x5F, 0xF6, 0x37, 0x10, 0x29, 0x24, 0x2C, 0xC6, 0x08, 0x40, 0xDD, 0x7D, 0x2A, 0x7A, 0x55, 0x03, 0xB7, 0xD2, 0x1C

注意事项

  • 支持所有标准EC曲线(P-256、P-384、secp256k1等),会自动匹配私钥长度生成对应输出
  • 若PEM私钥为加密状态,调用函数时传入bytes类型的密码参数即可

内容的提问来源于stack exchange,提问作者Fratink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 18:48:03