使用Python PyCryptodome生成RSA密钥格式不符合预期怎么办?
问题说明
你当前的代码仅提取了RSA密钥对的数学参数(模数n、公钥指数e)的原始数值,没有进行标准格式编码。你提到的带-----BEGIN PUBLIC KEY-----/-----BEGIN PRIVATE KEY-----标识的是PEM格式的通用密钥存储标准,本质是将ASN.1编码的密钥结构做Base64编码后加上固定头尾标识,需要调用pycryptodome内置的导出方法生成。
完整实现代码
from Crypto.PublicKey import RSA # 生成2048位RSA密钥对 keyPair = RSA.generate(bits=2048) # 导出PEM格式公钥 public_pem = keyPair.publickey().export_key(format='PEM') # 导出PEM格式私钥 private_pem = keyPair.export_key(format='PEM') # 可选:将密钥保存到本地文件 with open("public_key.pem", "wb") as f: f.write(public_pem) with open("private_key.pem", "wb") as f: f.write(private_pem)
补充说明
- 如果需要加密存储私钥,导出私钥时可添加
passphrase参数指定密码,示例:keyPair.export_key(format='PEM', passphrase=b'自定义密码') - 生成的PEM格式密钥和macOS自带的openssl工具生成的密钥格式完全兼容,可直接通用。
内容的提问来源于stack exchange,提问作者The Outstanding Question Asker
相关产品推荐
相关产品推荐

