简体   繁体   中英

rsa encryption decryption using c

I'm trying to write C code of RSA encryption and decryption using Open SSL. But I am not able to do so. I googled it but whatever code I got from internet it was out of my head. main function goes here which I got from stack overflow. I tried using it … but its not working. May be my bad.

encrypt(FILE *rsa_Pkey_fole,FILE *in_file,FILE *out_file){

}

int main(int argc, char *argv[])
{
    FILE *rsa_pkey_file, *infile;
    int rv;

    if (argc < 2) {
            fprintf(stderr, "Usage: %s <PEM RSA Public Key File>\n", argv[0]);
            exit(1);
    }

    rsa_pkey_file = fopen(argv[1], "rb");
    infile = fopen(argv[2], "w");
    if (!rsa_pkey_file) {
        perror(argv[1]);
        fprintf(stderr, "Error loading PEM RSA Public Key File.\n");
        exit(2);
    }

    rv = encrypt(rsa_pkey_file, infile.txt, stdout);
    fclose(rsa_pkey_file);

    return rv;
}

And similar way decryption.

How can I do RSA encryption and decryption of a file using Open SSL library in C in simple way?

Steps for RSA encryption are as follows:

  1. Read the public key into RSA * structure. It depends on your key format. If key is in PEM format, use PEM_read_RSA_PUBKEY functions. If it is in DER form, use d2i_RSA .
  2. Encrypt your data using RSA public key. Use RSA_public_encrypt function.
  3. Write the data to file or whatever you want to do.

Steps for RSA decryption are:

  1. Read the private key into RSA * structure. It is similar to step 1 in RSA encryption with some minor difference.
  2. Decrypt the data using RSA_private_decrypt . Use RSA_private_decrypt .

You can look OpenSSL documentation which is quite useful and its names are intuitive. I give you just broad level idea. If you need more help, I can post the code example.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM