欢迎访问宙启技术站
智能推送

在Python中如何加载PEM格式的公钥文件

发布时间:2024-01-05 04:43:39

在Python中,可以使用cryptography库来加载PEM格式的公钥文件。cryptography库是一个用于加密和解密的功能强大的库,支持加载和操作PEM格式的密钥。

首先,你需要安装cryptography库,可以使用以下命令来安装:

pip install cryptography

接下来,你需要准备一个PEM格式的公钥文件。PEM格式通常以.pem.crt为扩展名,并且文件内容以-----BEGIN PUBLIC KEY----------END PUBLIC KEY-----包围。下面是一个PEM格式的公钥文件的示例:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA7StzczBLP9miUVhB4u6a
eTxwat6qskw0fTmAPqF/D1XRWnMF4VlnYQ1Cw07fAxTytT9TyBCF4N8tseY8kk0z
u4u3yawH8ekTD4qzx7YvXxK5NgaS0E8X1OWDif2CbH+FGFdBV8vmHwOyRg78eNGj
dJzxGWSTJtUKFMHWRpQSDRhbTUGexFcK4xZNg/xEbuMP7oCn5dP+Oc5mVGt5JhPq
MMiAaG5nJTQbDlXjwKPwlbj8JcPVQDfVdJirE+G/gU3tioAGiINsx9JY+6rX9vn6
S7W1cRDoaJgJZnNiek0/rmfe14KFZugMc4sQdSt+SzTykOnv5OXb+waK2hnzrcaw
CQIDAQAB
-----END PUBLIC KEY-----

使用以下代码片段可以加载PEM格式的公钥文件并对其进行操作:

from cryptography.hazmat.primitives import serialization

with open("public_key.pem", "rb") as pem_file:
    public_key = serialization.load_pem_public_key(
        pem_file.read(),
    )

# 获取公钥的块大小
block_size = public_key.key_size // 8

# 对数据进行加密
data = b"Hello, World!"
encrypted_data = public_key.encrypt(
    data,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

# 对加密数据进行解密
decrypted_data = private_key.decrypt(
    encrypted_data,
    padding.OAEP(
        mgf=padding.MGF1(algorithm=hashes.SHA256()),
        algorithm=hashes.SHA256(),
        label=None
    )
)

print("Decrypted Data:", decrypted_data.decode())

在上面的示例中,首先使用serialization.load_pem_public_key函数加载PEM格式的公钥文件,并将其存储在public_key变量中。然后,可以使用public_key.encrypt方法对数据进行加密,并使用public_key.decrypt方法对加密数据进行解密。

需要注意的是,在实际使用过程中,应该根据具体情况修改加密和解密时使用的填充方式和哈希算法。

这就是在Python中加载PEM格式的公钥文件的方法,并附上了一个简单的使用示例。希望对你有所帮助!