【问题标题】:rsa encryption decryption using crsa加密解密使用c
【发布时间】:2013-03-17 04:16:09
【问题描述】:

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

【问题讨论】:

  • “它不工作”并不是一个特别有用的问题描述。 catb.org/esr/faqs/smart-questions.html
  • 请发布函数 encrypt,这个 main() 不会告诉我们太多...
  • 当然..我会发布加密部分..它有点大..我无法理解..
  • @sakshi 你能不能至少尝试使用正确的英语?这不是 4chan。
  • @FUZxxl 希望我的问题是人类可读的格式.. 所以如果可能的话尝试回答:)

标签: c openssl rsa encryption


【解决方案1】:

RSA加密步骤如下:

  1. 将公钥读入RSA * 结构。这取决于您的密钥格式。如果密钥为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 文档。我给你的只是广义的想法。如果您需要更多帮助,我可以发布代码示例。

【讨论】:

  • RSA_public_encrypt 的手册页说您需要在调用之前播种 RNG,这意味着您需要从某个地方获取一些随机数据以传递给 RAND_seed...
猜你喜欢
  • 2015-03-16
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
  • 2013-04-22
  • 2012-06-02
  • 1970-01-01
  • 2012-03-13
相关资源
最近更新 更多