This package provides a high-level interface to the functions in the OpenSSL library. The following modules are defined: crypto、SSL
译文:这个包为OpenSSL库中的函数提供了一个高级接口。定义了以下模块:crypto、SSL
文档
- https://www.pyopenssl.org/en/stable/api.html
- https://pypi.org/project/pyOpenSSL/
- https://github.com/pyca/pyopenssl
安装
$ pip install pyopenssl
产生密钥对
from OpenSSL.crypto import PKey
from OpenSSL.crypto import TYPE_RSA, FILETYPE_PEM
from OpenSSL.crypto import dump_privatekey, dump_publickey
pk = PKey()
pk.generate_key(TYPE_RSA, 1024)
# PUBLIC KEY
dpub = dump_publickey(FILETYPE_PEM, pk)
print(dpub)
# PRIVATE KEY
dpri = dump_privatekey(FILETYPE_PEM, pk)
print(dpri)
签名与验证
from OpenSSL.crypto import PKey
from OpenSSL.crypto import TYPE_RSA
from OpenSSL.crypto import X509
from OpenSSL.crypto import sign, verify
pk = PKey()
pk.generate_key(TYPE_RSA, 1024)
# sign
signature = sign(pk, 'hello, world!'.encode('utf-8'), 'sha1')
print(signature)
# b'\xb2\xec\x01\xfc\x1ai\x1c...'
# verify 成功返回None,失败抛出异常:OpenSSL.crypto.Error
x509 = X509()
x509.set_pubkey(pk)
verify(x509, signature, 'hello, world!'.encode('utf-8'), 'sha1')
参考文章