首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用OpenSSL生成RSA私钥?

如何使用OpenSSL生成RSA私钥?
EN

Stack Overflow用户
提问于 2011-05-08 19:32:12
回答 3查看 46.8K关注 0票数 30

我想知道如何使用我的C源文件中的OpenSSL库生成RSA私钥。我知道如何使用终端命令生成它。

实际上,我的server.c文件将生成一个私钥并发送给client.c。如果可能,请帮助我提供一些源代码,否则将不胜感激。

我在Linux机器上工作。

EN

回答 3

Stack Overflow用户

发布于 2011-06-04 03:23:36

代码语言:javascript
复制
#include <openssl/rsa.h>
#include <openssl/pem.h>

const int kBits = 1024;
const int kExp = 3;

int keylen;
char *pem_key;

RSA *rsa = RSA_generate_key(kBits, kExp, 0, 0);

/* To get the C-string PEM form: */
BIO *bio = BIO_new(BIO_s_mem());
PEM_write_bio_RSAPrivateKey(bio, rsa, NULL, NULL, 0, NULL, NULL);

keylen = BIO_pending(bio);
pem_key = calloc(keylen+1, 1); /* Null-terminate */
BIO_read(bio, pem_key, keylen);

printf("%s", pem_key);

BIO_free_all(bio);
RSA_free(rsa);
free(pem_key);
票数 35
EN

Stack Overflow用户

发布于 2011-05-08 19:39:21

在使用RAND_add对PRNG进行适当的种子设定之后,您可以使用RSA_generate_key_ex

编辑:虽然在最初编写此答案时需要调用RAND_add,但当前版本的OpenSSL不再需要手动播种PRNG。

票数 9
EN

Stack Overflow用户

发布于 2012-11-30 06:26:54

kExp=3可能是一个安全漏洞,请改用65537。这个问题被称为“小RSA”,例如http://en.wikipedia.org/wiki/Coppersmith%27s_Attackhttp://www.usna.edu/Users/math/wdj/book/node45.html也请使用超过1024位。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5927164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档