保存openssl中RSA密钥对

标准的openssl生成的证书的顺序是 :

[OpenSSL 测试程序: https://github.com/qianguozheng/datastructure]

如下是生成密钥对, 根据密钥并且分别保存密钥对的私钥,与公钥.

经过测试, 密钥对中的私钥可以提取出公钥, 我对其密钥不是很了解,通过测试发现是可以的. 不知道谁可以讲述下.

/* 产生RSA密钥 */
RSA *rsa = RSA_new();
BIGNUM* e = BN_new();

/* 设置随机数长度 */
BN_set_word(e, 65537);

/* 生成RSA密钥对 */
RSA_generate_key_ex(rsa, 2048, e, NULL);

printf("BIGNUM: %s\n", BN_bn2hex(rsa->n));

/* 提取私钥 */
printf("PRIKEY:\n");

FILE *filename = NULL;
filename = fopen("privateKey.pem", "wb");
PEM_write_RSAPrivateKey(filename, rsa, NULL, NULL, 0, NULL, NULL);
fclose(filename);

//writeRSA(rsa, NULL);
/* 提取公钥 */

unsigned char *n_b = (unsigned char *)calloc(RSA_size(rsa), sizeof(unsigned char));
unsigned char *e_b = (unsigned char *)calloc(RSA_size(rsa), sizeof(unsigned char));

int n_size = BN_bn2bin(rsa->n, n_b);
int b_size = BN_bn2bin(rsa->e, e_b);

RSA *pubrsa = RSA_new();
pubrsa->n = BN_bin2bn(n_b, n_size, NULL);
pubrsa->e = BN_bin2bn(e_b, b_size, NULL);

printf("PUBKEY: \n");

FILE *publicKey = NULL;
publicKey = fopen("publicKey.pem", "wb");
PEM_write_RSAPublicKey(publicKey, pubrsa);
fclose(publicKey);

RSA_free(rsa);
RSA_free(pubrsa);
时间: 2024-10-29 19:06:25

保存openssl中RSA密钥对的相关文章

OpenSSL 中 RSA 加密解密实现源码分析

1.RSA 公钥和私钥的组成,以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算,如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.并且足够大的素数 p 和 q 计算 n = p * q 计算欧拉函数 f(n) = (p-1) * (q-1),p 和 q 需要保密 寻找与 f(n) 互质的数 e,并且 1 < e < f(n) 计算 d,使得 d * e ≡ 1 mod f(n) 公钥 KU = (e , n)   私钥 KR =

OpenSSL 中 RSA 加密解密实现源代码分析

1.RSA 公钥和私钥的组成.以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算.如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.而且足够大的素数 p 和 q 计算 n = p * q 计算欧拉函数 f(n) = (p-1) * (q-1),p 和 q 须要保密 寻找与 f(n) 互质的数 e.而且 1 < e < f(n) 计算 d,使得 d * e ≡ 1 mod f(n) 公钥 KU = (e , n)   私钥 KR =

OPENSSL中RSA私钥文件(PEM格式)解析【一】

http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- p prime2 INTEGER, -- q

非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例

RSA算法,在1977年由Ron Rivest.Adi Shamirh和LenAdleman,在美国的麻省理工学院开发完成.这个算法的名字,来源于三位开发者的名字.RSA已经成为公钥数据加密标准. RSA属于公开密钥密码体制.公开密钥体制就是产生两把密钥,一把用于加密,一把用于解密,而且不能根据算法和其中的一把密钥,而去推出另外的一把密钥.在使用的时候,将公钥公开,对方用公开的公钥加密数据后,将密文发回,然后用另一把私钥进行解密,从而还原出明文. RSA算法的数学基础是数论中的素数相关性质.RS

用openssl生成rsa密钥对

生成私钥 openssl genrsa -out rsa_1024_pri.pem 1024 生成公钥 openssl rsa -pubout -in rsa_1024_pri.pem -out rsa_1024_pub.pem 原文地址:http://blog.51cto.com/13332094/2128205

jsencrypt代码分析——openssl的rsa加密解密在js的实现

在js上做rsa,感觉jsencrypt这个是封装的比较好的,但用起来还是遇到了些坑,所以踩进代码里填填坑- 项目在这里 https://github.com/travist/jsencrypt [rsa算法] 首先科普一下rsa:公钥私钥成对,用其中一个加密只能用另一个解密,常用公钥加密私钥解密. 一开始看到斯坦佛那个库,原始的算法实现: 长度,建议至少1024.模数n(常取默认65537)两边都要用. 指数e,和n一起就是公钥.指数d,和n一起就是私钥.质数p和q用于生成密钥对,然后就丢弃不

支付宝打造公共账号业务网关, RSA密钥对生成

作者: 玉龙      版权全部,同意转载. 请注明出处(创建金融_玉龙  http://www.weibo.com/u/1872245125) 原文地址: http://blog.csdn.net/yehuijun/article/details/24780119 支付宝的公众账号文档地址 http://open.alipay.com/index.htm 要开通支付宝的公众账号第一步就是要验证商户网关和开发人员公钥的有效性. key=236714_422556&type=info" c

支付宝公众账号商户网关的搭建, RSA密钥对生成

作者: 玉龙      版权所有,允许转载, 请注明出处(创建金融_玉龙  http://www.weibo.com/u/1872245125) 支付宝的公众账号文档地址 http://open.alipay.com/index.htm 要开通支付宝的公众账号第一步就是要验证商户网关和开发者公钥的有效性. https://openhome.alipay.com/doc/docIndex.htm?url=https://openhome.alipay.com/doc/viewKbDoc.htm?k

使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的server异步通知

因为业务须要.我们须要使用支付宝移动快捷支付做收款.支付宝给了我们<移动快捷支付应用集成接入包支付接口>见支付宝包<WS_SECURE_PAY_SDK>. 支付宝给的serverdemo仅仅有Java.C#.PHP三种,而我们server端使用的是C++. 这当中就涉及到接收支付宝的server异步通知.为了确保接收到的server异步通知来至支付宝,我们就必须验证支付宝的签名. 坑爹的是,原来PC端使用MD5做签名,预计支付宝考虑到移动端的风险更高,于是改用RSA做移动快捷支付应