You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Paramiko将RSAKey序列化为可被RSAKey(data=raw_key)接收的原始字符串

解决方法

首先明确核心点:paramiko.rsakey.RSAKey(data=xxx)接口接收的data参数,是ASN.1 DER编码的原始RSA私钥二进制数据,不是带BEGIN/END标记的PEM格式文本。你之前报错信息里出现的-----BEGIN RSA PRIVATE KEY-----头就是PEM格式的典型标记,这也是write_private_key导出的内容无法直接传入该接口的根本原因。

直接从RSAKey实例持有的底层私钥对象导出对应格式的二进制数据即可,paramiko 2.4+版本底层依赖cryptography库做密码学运算,不需要额外安装依赖,代码如下:

from cryptography.hazmat.primitives import serialization
import paramiko

# 导出可直接传入RSAKey(data=)的原始私钥字节
raw_key_data = rsa_key.key.private_bytes(
    encoding=serialization.Encoding.DER,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.NoEncryption()
)

# 验证:导出的内容可以直接初始化RSAKey实例
valid_key = paramiko.rsakey.RSAKey(data=raw_key_data)

注意事项

  • 如果你最初传入RSAKey(data=)的是字符串类型而非字节类型,根据你之前使用的编码规则对raw_key_data做对应解码即可,不要额外做Base64转码,DER本身是未编码的原始二进制格式。
  • 不要尝试手动解析write_private_key导出的PEM内容来提取DER数据,这种方式多了不必要的编解码步骤,容易引入格式错误。

内容的提问来源于stack exchange,提问作者Björn Pollex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 23:42:19