首页 > 其他 > 详细

生成RSA密钥对

时间:2021-06-12 11:07:24      阅读:16      评论:0      收藏:0      [点我收藏+]
#include <openssl/rsa.h>

int PEM_write_RSAPublicKey(FILE* fp,const RSA* r);
int PEM_write_RSAPrivateKey(FILE* fp,const RSA* r,const EVP_CIPHER* enc,
  unsigned char* kstr,int klen,pem_password_cb* cb,void* u);
参数:
  - fp: 需要打开一个磁盘文件,并且指定写权限
  - r: 存储了密钥对
/////////////// - 私钥独有的参数
  - enc: 指定的加密算法 -> 堆成加密 -> NULL
  - kstr: 对称加密的密钥 -> NULL
  - klen: 密钥长度 -> 0
  - cb:回调函数,用不到,NULL
  - u: 给回调传参,用不到,NULL

代码演示

#include <iostream>
#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <cstdio>

void generateRsaKey()
{
//  创建RSA变量
    RSA* rsa = RSA_new();
//  创建bignum对象并初始化
    BIGNUM* e = BN_new();
    BN_set_word(e,12345);
//  生成密钥对                                                                                 
    RSA_generate_key_ex( rsa,1024,e,NULL );
//---------生成密钥对 1024代表密钥长度
//  RSA_F4为公钥指数,一般情况下使用RSA_F4即可,
//  RSA_generate_key( 1024,RSA_F4,NULL,NULL );
//  将密钥对写入到磁盘
    FILE* fp = fopen("public.pem","w"); // 写公钥
    PEM_write_RSAPublicKey(fp,rsa);
    fclose(fp);
    fp = fopen("private.pem","w"); // 写私钥
    PEM_write_RSAPrivateKey(fp,rsa,NULL,NULL,0,NULL,NULL);
    fclose(fp);
//  密钥对写入文件的时候,需要编码 -> base64
    
}
int main()
{
    generateRsaKey();
    return 0;
}

生成RSA密钥对

原文:https://www.cnblogs.com/lodger47/p/14877698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!