openssl生成公私钥,并获取pkcs8公钥,c实现
时间: 2024-02-20 19:58:35 浏览: 139
以下是使用 OpenSSL 库在 C 语言中生成 RSA 公私钥对,并获取 PKCS#8 格式公钥的代码示例:
```c
#include <openssl/rsa.h>
#include <openssl/pem.h>
int main() {
RSA *keypair = RSA_new();
BIGNUM *exponent = BN_new();
int bits = 2048; // 密钥位数
// 设置指数
BN_set_word(exponent, RSA_F4);
// 生成密钥对
RSA_generate_key_ex(keypair, bits, exponent, NULL);
// 写入私钥
FILE *fp = fopen("private.pem", "wb");
PEM_write_RSAPrivateKey(fp, keypair, NULL, NULL, 0, NULL, NULL);
fclose(fp);
// 获取公钥
EVP_PKEY *pubkey = EVP_PKEY_new();
EVP_PKEY_assign_RSA(pubkey, keypair);
// 写入 PKCS#8 格式公钥
fp = fopen("public.pkcs8", "wb");
i2d_PublicKey_fp(fp, pubkey);
fclose(fp);
return 0;
}
```
上述代码中,`RSA_generate_key_ex` 函数用于生成密钥对,`PEM_write_RSAPrivateKey` 函数用于将私钥写入文件,`EVP_PKEY_assign_RSA` 函数用于将 RSA 公私钥对象转换为 OpenSSL 内部的 EVP_PKEY 对象,`i2d_PublicKey_fp` 函数用于将公钥以 PKCS#8 格式写入文件。
阅读全文