- 论坛徽章:
- 3
|
- #include <stdio.h>
- #include <openssl/bio.h>
- #include <openssl/rsa.h>
- #include <openssl/pem.h>
- int main()
- {
- BIO *bpub, *bpri;
- bpub = BIO_new_file("public.rsa", "w");
- if (!bpub)
- printf("failed to create public bio file\n");
- bpri = BIO_new_file("private.rsa", "w");
- if (!bpri)
- printf("failed to create private bio file\n");
- if (!bpub || !bpri) goto EXIT;
- RSA *pRSA;
- pRSA = RSA_generate_key( 1024, RSA_F4, NULL, NULL);
- if (pRSA != NULL) {
- if (!PEM_write_bio_RSAPublicKey(bpub, pRSA) ) {
- printf("PEM_write_bio_RSAPublicKey: failed\n");
- }
- /*
- int PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, const EVP_CIPHER *enc,
- unsigned char *kstr, int klen,
- pem_password_cb *cb, void *u);
- */
- if (!PEM_write_bio_RSAPrivateKey(bpri, pRSA, EVP_des_ede3_cbc(), NULL, 0, 0, "Private")) {
- printf("PEM_write_bio_PrivateKey: failed\n");
- }
- }
- EXIT:
- if (bpub)
- BIO_free(bpub);
- if (bpri)
- BIO_free(bpri);
- if (pRSA) free(pRSA);
- printf("done.\n");
- return 0;
- }
复制代码
# openssl version
OpenSSL 0.9.8g 19 Oct 2007
# gcc testrsa.c -Wall -I/usr/local/include/ -L/usr/local/ssl/lib/ -lssl -L/usr/local/ssl/lib/ -lcrypto -ldl -o test
# ./test
done.
# cat public.rsa
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAMOrgY2RShq+jbE06j5ghwt3kSE+p60fBinxN+Hi7WQbo7fpglhrzAKy
eng5X792dlvkhX4Q/1aUWlV5+mz/XLCvbjI5NqYn/r4qEqbpWri/psd94DQjDvGo
QFpA7e+JTtmkYjCET7h7SXl6tNHDvJvwmCiaYcKLjsIeoMYWF3XfAgMBAAE=
-----END RSA PUBLIC KEY-----
#
# cat private.rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,753C90474CAAC6F3
ajl7ZC3Plx/Tc/eoRlIz5xsbLe7VnnsDoqdWOw6X6rlb+S8Tcyz2G4BGgrc+lcrf
6Md+tC27DmKwfamTfyaZYv/XHjs7YwiD6MlfHHMbPZvArIDx6J0pQHoMwa51Efrr
WmuTlOzHN2AfixEobz8C+a9TCwHfjFiccsa1lV2cIV0BUWJ1TbYiBMU8jy69PzK+
IZo+avZR2ncqvk5NgTVSsMumMHlAyOb0PSDTbzJmIf82/XIZxieP2qFNdK5bM+qB
F+hZl2HIHt3EzuQ56yQa5EU8ocufnITJeUAk997zd+31ztUIWI2CbnjWY5UYqh3M
EBM2GeS8Kfo7dya9DDbmNtrx/UGxSlg16+KIVIrHXcytsiU/AnzgGzDMbFtLyLfh
NJXmiBenEF9yTcuv7Gnm19CvQ5dxayLJDrv4bpEfVJOPQv02tN4c223+ZlO2EGkD
M+HfUgKjZk+7aLZq24MDQ/WKlr2vh35G3yBW1UgjVuqPz4uYML3MpiEFy34KH4oA
xBxKE17AJ8n2ouZLD38ibnNQXPI3GgW32vi1T+9IuCGnBCsms2l6nLvEessSK8x5
PfV4UgNyUlnLSZA6fNxFspOI3IP2bqDA2ARasNVeJz9eU3H6JOT25mH7+O+WE2eH
LE1Iyqrvo+5GTqu1Gr/SHw67vZnFz8VFDEqel0pTJJ4ad4viYs0R7ZrYEkxQm8Ja
7PU5KtOnFHyrjhAVBsh9eH/XzTFgjyT7xB8nusNDoM931iITA5iItZTDSSOT3qFU
JT+mdwx1j7wfceUwt8dMLcXbVBJBxHicdu5A9MDXDaAJonZ/EgfBDg==
-----END RSA PRIVATE KEY-----
[ 本帖最后由 ynchnluiti 于 2008-11-25 13:44 编辑 ] |
|