如何使用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
相关产品推荐
相关产品推荐

