2

我正在尝试使用 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 加密和解密?

4

1 回答 1

4

RSA加密的步骤如下:

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

RSA解密的步骤是:

  1. 将私钥读入RSA *结构。它类似于 RSA 加密中的步骤 1,但有一些细微差别。
  2. 使用 解密数据RSA_private_decrypt使用RSA_private_decrypt.

您可以查看非常有用的 OpenSSL 文档,并且它的名称很直观。我给你的只是广义的想法。如果您需要更多帮助,我可以发布代码示例。

于 2013-03-27T10:29:35.647 回答