📜  python 生成公钥私钥对 - Python (1)

📅  最后修改于: 2023-12-03 14:46:17.217000             🧑  作者: Mango

通过Python生成公钥私钥对

在密码学中,公钥私钥对是一种常用的加密和解密机制。公钥用于加密数据,私钥用于解密数据。Python提供了多个库和函数来生成公钥私钥对。

1. 使用cryptography库生成公钥私钥对

cryptography是一个功能强大的密码学库,可以用于生成各种密码学相关的对象,包括公钥私钥对。以下示例演示了如何使用cryptography库生成RSA算法的公钥私钥对。

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

def generate_key_pair():
    # 生成私钥
    private_key = rsa.generate_private_key(
        public_exponent=65537,
        key_size=2048,
        backend=default_backend()
    )
    
    # 生成公钥
    public_key = private_key.public_key()
    
    # 将私钥和公钥序列化为PEM格式
    private_pem = private_key.private_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PrivateFormat.PKCS8,
        encryption_algorithm=serialization.NoEncryption()
    )
    public_pem = public_key.public_bytes(
        encoding=serialization.Encoding.PEM,
        format=serialization.PublicFormat.SubjectPublicKeyInfo
    )

    return private_pem, public_pem

private_key, public_key = generate_key_pair()

该示例中,我们使用了RSA算法生成了一个2048位的私钥,并从私钥中提取了公钥。然后,我们使用serialization模块将私钥和公钥序列化为PEM格式的字符串,并返回。

2. 使用pycryptodome库生成公钥私钥对

pycryptodome是一个流行的加密库,也支持生成公钥私钥对。以下示例展示了如何使用pycryptodome库生成RSA算法的公钥私钥对。

from Cryptodome.PublicKey import RSA

def generate_key_pair():
    # 生成RSA密钥对
    key = RSA.generate(2048)

    # 获取私钥和公钥
    private_key = key.export_key()
    public_key = key.publickey().export_key()

    return private_key, public_key

private_key, public_key = generate_key_pair()

在这个示例中,我们使用RSA算法生成了一个2048位的私钥,并从中提取了公钥。然后,我们使用export_key()函数获取私钥和公钥,并返回。

以上就是使用cryptographypycryptodome库生成公钥私钥对的示例。可以根据需要选择适合自己的库来生成公钥私钥对。