【Python】使用Python调用OpenSSL进行RSA密钥对生成

OpenSSL是一个比较常用的加解密库,在Linux的基础软件包中也都有,所以用起来比较方便。但是,OpenSSL没有提供Python的接口,只有C的接口,不过没关系,Python有一个ctypes的模块,可以实现调用C语言写的动态库。下面,我就以使用OpenSSL为例讲下如何使用Python调用OpenSSL来进行RSA密钥对生成。

本文示例代码使用Python 3.9.2和OpenSSL 1.1.1k完成验证。

使用Python的ctypes调用C语言写的动态库需要三步:

使用cdll.LoadLibrary加载动态库

设置函数参数和返回值类型

调用C语言动态库中的函数

第二步设置函数参数和范围值类型是因为Python和C语言的基础数据类型是有差异的,将Python的类型传递给C语言的函数是需要做转换,设置完类型后,Python就可以帮助你做类型转换,转换为C语言支持的数据类型。

了解完如何使用Python调用C语言的动态库,我们再了解下OpenSSL进行RSA密钥对生成、加解密和签名验签的一些函数。

首先是RSA_new和RSA_free这两个函数,这两个函数是为了生成和释放RSA类型的,函数原型如下:

RSA *RSA_new(void);

void RSA_free(RSA *rsa);

然后是OpenSSL大整数相关的两个函数BN_new和BN_free,用来初始化和释放大整数类型的,函数原型如下:

BIGNUM *BN_new(void);

void BN_free(BIGNUM *a);

你可能感兴趣的:(云原生,Python,算法,服务器,开发语言,python)