使用c进行rsa加密解密

时间:2013-03-27 06:06:28

标签: c openssl rsa encryption

我正在尝试使用Open SSL编写RSA加密和解密的C代码。但我无法这样做。我用谷歌搜索了它,但无论我从互联网上得到什么代码,它都是我的头脑。 main函数在这里从堆栈溢出中获取。我尝试过使用它......但它没有用。可能是我的坏事。

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;
}

和解密方式类似。

如何使用C语言中的Open SSL库以简单的方式对文件进行RSA加密和解密?

1 个答案:

答案 0 :(得分:4)

RSA加密的步骤如下:

  1. 将公钥读入RSA *结构。这取决于您的密钥格式。如果密钥为PEM格式,请使用PEM_read_RSA_PUBKEY个函数。如果是DER格式,请使用d2i_RSA
  2. 使用RSA公钥加密您的数据。使用RSA_public_encrypt功能。
  3. 将数据写入文件或您想要做的任何事情。
  4. RSA解密的步骤是:

    1. 将私钥读入RSA *结构。类似于RSA加密中的第1步,但有一些细微差别。
    2. 使用RSA_private_decrypt解密数据。使用RSA_private_decrypt
    3. 您可以查看OpenSSL文档,它非常有用且名称直观。我给你的是广泛的想法。如果您需要更多帮助,我可以发布代码示例。