我想知道如何使用我的C源文件中的OpenSSL库生成RSA私钥。我知道如何使用终端命令生成它。
实际上,我的server.c文件将生成一个私钥并发送给client.c。如果可能,请帮助我提供一些源代码,否则将不胜感激。
我在Linux机器上工作。
发布于 2011-06-04 03:23:36
#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);
发布于 2011-05-08 19:39:21
在使用RAND_add
对PRNG进行适当的种子设定之后,您可以使用RSA_generate_key_ex
。
编辑:虽然在最初编写此答案时需要调用RAND_add
,但当前版本的OpenSSL不再需要手动播种PRNG。
发布于 2012-11-30 06:26:54
kExp=3可能是一个安全漏洞,请改用65537。这个问题被称为“小RSA”,例如http://en.wikipedia.org/wiki/Coppersmith%27s_Attack和http://www.usna.edu/Users/math/wdj/book/node45.html也请使用超过1024位。
https://stackoverflow.com/questions/5927164
复制相似问题