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

如何使用Fernet生成RSA私钥及用pyca/cryptography实现OpenSSL命令功能

注意:Fernet无法生成RSA私钥

Fernet是基于AES的对称加密方案,仅用于对称加密/解密操作,不涉及RSA这类非对称密钥的生成。生成RSA私钥需要使用cryptography库的非对称加密模块。

用pyca/cryptography实现与winpty openssl genrsa -des3 -out my_rsa_key_pair 2048相同的操作

这条OpenSSL命令的功能是:生成2048位RSA私钥,用DES3算法加密私钥(需设置密码),并将加密后的私钥保存到my_rsa_key_pair文件中。以下是等效的Python实现:

1. 安装依赖

确保已安装cryptography库:

pip install cryptography

2. 实现代码

from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.backends import default_backend

# 生成2048位RSA私钥(与OpenSSL默认参数完全一致)
private_key = rsa.generate_private_key(
    public_exponent=65537,
    key_size=2048,
    backend=default_backend()
)

# 获取加密私钥的密码(建议交互式输入,避免硬编码)
password = input("请输入私钥加密密码: ").encode()

# 序列化私钥为PEM格式,并用DES3加密(对应OpenSSL的-des3选项)
encrypted_pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.TraditionalOpenSSL,
    encryption_algorithm=serialization.BestAvailableEncryption(password)
)

# 将加密后的私钥写入文件
with open("my_rsa_key_pair", "wb") as key_file:
    key_file.write(encrypted_pem)

关键说明

  • rsa.generate_private_key:使用RSA标准公钥指数65537生成2048位密钥,和OpenSSL的默认配置完全匹配。
  • serialization.BestAvailableEncryption:该选项会自动选用兼容OpenSSL -des3的加密算法,生成的私钥文件可以直接用OpenSSL命令解密查看:
winpty openssl rsa -in my_rsa_key_pair -text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:35:45