It is known that RSA is a cryptosystem which is used for the security of data transmission. This tutorial introduces how to use RSA to generate a pair of public and private keys on Windows.
- Download and install OpenSSL https://www.openssl.org/community/binaries.html. 
- Find libeay32.lib, ssleay32.lib and libeay32.dll. 
- The following sample code will generate a public key “public.pem” and a private key “private.pem”. 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | #include <stdio.h>#include <openssl/rsa.h>#include <openssl/pem.h>boolgenerate_key(){    intret = 0;    RSA             *r = NULL;    BIGNUM          *bne = NULL;    BIO             *bp_public = NULL, *bp_private = NULL;    intbits = 2048;    unsigned longe = RSA_F4;    // 1. generate rsa key    bne = BN_new();    ret = BN_set_word(bne,e);    if(ret != 1){        gotofree_all;    }    r = RSA_new();    ret = RSA_generate_key_ex(r, bits, bne, NULL);    if(ret != 1){        gotofree_all;    }    // 2. save public key    bp_public = BIO_new_file("public.pem", "w+");    ret = PEM_write_bio_RSAPublicKey(bp_public, r);    if(ret != 1){        gotofree_all;    }    // 3. save private key    bp_private = BIO_new_file("private.pem", "w+");    ret = PEM_write_bio_RSAPrivateKey(bp_private, r, NULL, NULL, 0, NULL, NULL);    // 4. freefree_all:    BIO_free_all(bp_public);    BIO_free_all(bp_private);    RSA_free(r);    BN_free(bne);    return(ret == 1);}intmain(intargc, char* argv[]) {    generate_key();        return0;} | 
You can feel free to download the sample code, and run it in Visual Studio.
https://www.codepool.biz/how-to-use-openssl-generate-rsa-keys-cc.html