pyca/cryptography库的学习(7)中的RSA密钥保存
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
# 生成 RSA 私钥
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
# 将私钥序列化为 PEM 格式
pem_private_key = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption() # 无加密保存
)
# 保存私钥到 PEM 文件
with open("private_key.pem", "wb") as pem_file:
pem_file.write(pem_private_key)
# 获取公钥
public_key = private_key.public_key()
# 将公钥序列化为 PEM 格式
pem_public_key = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
# 保存公钥到 PEM 文件
with open("public_key.pem", "wb") as pem_file:
pem_file.write(pem_public_key)
print("私钥和公钥已成功保存为 PEM 文件!")
读取私钥的方式如下:
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.serialization import load_pem_private_key
从 PEM 文件中加载私钥
with open("private_key.pem", "rb") as pem_file:
private_key = load_pem_private_key(
pem_file.read(),
password=None # 如果私钥加密了,提供密码,例如 b"your_password"
)
使用私钥解密消息:
# 假设有一个加密的消息 encrypted_message (字节类型)
encrypted_message = b"...加密的数据..." # 替换为实际加密数据
# 解密消息
decrypted_message = private_key.decrypt(
encrypted_message,
padding.OAEP( # 使用 OAEP 填充
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 输出解密后的消息
print("解密后的消息:", decrypted_message.decode("utf-8"))
原文地址:https://blog.csdn.net/qq_45983946/article/details/144790291
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!