2019/01/18
7,324
在我之前的一篇博客中 RSA 公钥加密原理 中, 对 RSA 非对称加密原理做了简单的阐述。这篇博客主要聊如何使用 OPENSSL 进行密钥对的生成,以及非对称加解密。
一. 生成密钥对
在 OPENSSL 中, RSA 是一个很重要的结构体。它的定义在 rsa_locl.h 中,面包含了在原理中提到的所有重要的变量 随机质数 p, q, 公钥指数 e, 私钥指数 d, 以及模数 n
|
1 2 3 4 5 6 7 8 9 |
struct rsa_st { // ... BIGNUM *n; BIGNUM *e; BIGNUM *d; BIGNUM *p; BIGNUM *q; // ... }; |
生成密钥函数:
|
1 |
int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); |
bits密钥的规模(modulus)。小于 1028 位的密钥是不安全的,小于 512 则会返回 0e公开的指数。它应该是一个奇数(odd number), 一般是3, 17或65537cb生成大随机数的回调函数。一般使用 NULL 即可, 默认为BN_GENCB_call()