最近一段时间在用python写一个CA证书中心,期间,客户端将CSR文件或者CA证书文件发送给服务器的时候,应当使用服务器的根证书的公钥加密,到服务器那边,用私钥来解密。但是找遍整个pyopenssl都没有发现,有类似的方法。于是,只好自己在网上看看有没有其他的库可以加载pyopenssl生成的公私钥。终于,找到了,下面上图:
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
# 从公钥数据中加载公钥
public_key = serialization.load_pem_public_key(key_data,backend=default_backend())
# 使用公钥对原始数据进行加密,使用PKCS#1 v1.5的填充方式
data_out= public_key.encrypt( data,padding.PKCS1v15())
# 读取私钥数据
key_file = open(private_key_file_name, 'rb')
key_data = key_file.read()
key_file.close()
# 从私钥数据中加载私钥 这里要注意password是之前在证书里设置得。
private_key = serialization.load_pem_private_key( key_data,password=b'123456',backend=default_backend())
# 使用私钥对数据进行解密,使用PKCS#1 v1.5的填充方式
out_data = private_key.decrypt(data, padding.PKCS1v15())