使用c实现rsa加密解密

2024-02-05

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


RSA加密的步骤如下:

  1. 将公钥读入RSA *结构。这取决于您的密钥格式。如果钥匙在PEM格式、使用PEM_read_RSA_PUBKEY功能。如果是在DER形式、用途d2i_RSA.
  2. 使用 RSA 公钥加密您的数据。 Use RSA_public_encrypt功能。
  3. 将数据写入文件或执行任何您想要执行的操作。

RSA解密的步骤是:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用c实现rsa加密解密 的相关文章

随机推荐

  • 如何查找哪个表列对应于 Firebird 数据库中的约束?

    我有一个旧版 Firebird 版本 2 5 2 数据库 并使用 FlameRobin 版本 0 0 2 1851 来检查它 我已在 RDB RELATION CONSTRAINTS 表上运行以下查询来搜索名为 INTEG 172 的约束
  • 尝试在 Matlab 中使用发布时陷入无限循环

    Question 1 y dtmfsig 150006260 a t linspace 0 0 9 7200 plot t y title DTMF time signal xlabel t sec ylabel y t Part B fL
  • CSS:
    dt/dd 对之间有间距/边距

    我有以下 html dl dt Item 1 dt dd ul li Value 1 li ul dd dt Item 2 dt dd dd dt Item 3 dt dd ul li Value 1 li li Value 2 li ul
  • 使用 std::vector 管理映射内存 (glMapBuffer)

    我想到用 std vector 管理一系列映射内存 来自 glMapBuffer 是个好主意 map data to ptr T dataPtr T glMapBuffer this gt target access debug code
  • 如何将页面(模式对话框)与其同级页面(侧边栏)进行通信?

    我正在将我的脚本转换为附加组件 其中一个需求是配置模板 因此我编写了一个启动字段选择器的侧边栏 由于侧边栏没有足够的空间容纳选择器 因此我必须从侧边栏创建的模式对话框中启动它 方法是在服务器端调用以下代码 var html HtmlServ
  • 如何在 javascript 中获取 HTML 文件格式作为字符串

    我想在 javascript 中获取 html 文件所有内容的字符串值 例如 有什么办法可以做到这一点吗 尝试研究 AJAX 适合将 HTML 和 C 实现到 Javascript Web 应用程序中 在你的 JS 文件中 ajax typ
  • 16位灰度PNG

    我正在尝试编写 使用 libpng 一个 16 位灰度图像 其中每个点颜色等于其坐标之和 以下代码应生成 16 位 PNG 但会生成 8 位 例如this http dl dropbox com u 15187698 test png Wh
  • 如何在Python中使用子进程重定向输出?

    我在命令行中执行的操作 cat file1 file2 file3 gt myfile 我想用 python 做什么 import subprocess shlex my cmd cat file1 file2 file3 gt myfil
  • 为什么我的 Swift 循环失败并出现错误“Can't form range with end < start”?

    我有一个 for 循环 它检查一个数字是否是一个数字的因子 然后检查该因子是否是质数 然后将其添加到数组中 根据原始号码 我会收到一条错误消息 致命错误 无法形成结束 这种情况几乎每次都会发生 但对于某些数字来说效果很好 我发现唯一可以使用
  • Excel如何返回满足一定条件的数组?

    如果我的单元格范围内有数据A1 A6这是 Apple Banana Cherry Grape Orange Watermelon 有没有办法返回一个数组 在单个单元格中 用于较大公式的中间步骤 该数组返回上述数组 除了那些满足特定条件的条目
  • 使 MSDeploy (Visual Studio) 不删除 App_Data 文件夹,而是删除其他所有内容

    我正在使用 Visual Studio 的Publish按钮来部署我的网站 并希望在服务器上有一个不同的 App Data 文件夹 有一个复选框Leave extra files on destination do not delete 这
  • C# 中的高性能 TCP 服务器

    我是一名经验丰富的 C 开发人员 但到目前为止我还没有开发过 TCP 服务器应用程序 现在我必须开发一个高度可扩展的高性能服务器 可以处理至少 5 10 000 个并发连接 通过 GPRS 从 GPS 设备获取原始字节数据 一个常见的通信流
  • 在 .net 网站中生成文本文件的最佳方法是什么?

    我的 vb net Web 应用程序中有一个页面 需要将一堆数据放入文本文件中 然后将其提供给用户下载 在 net Web 服务器上构建此类文本文件的最佳 最有效方法是什么 编辑 为了回答下面的问题 这将是下载一次然后丢弃的文件 更新 我将
  • dma_mmap_coherent 和 remap_pfn_range 有什么区别?

    目前 我正在使用示例驱动程序 https github com claudioscordino mmap alloc blob master mmap alloc c从中学习 并从中我建立了自己的自定义驱动程序 mmap 代码几乎是相同的
  • Phonegap Android InAppBrowser 不工作

    我正在使用 Phonegap Cordova 3 0 0 开发 Android 应用程序 当我调用 InAppBrowser 时 我得到了运动事件 mTouchMode 4错误 并且InAppBrowser功能不起作用 那么我该如何解决这个
  • 正则表达式将数字与 Alpha 分开

    我有一堆字符串 10people 5cars 我该如何将其拆分为 10 people 5 cars 它可以是任意数量的数字和文本 我正在考虑编写某种正则表达式 但我确信在 Python 中有一种简单的方法可以做到这一点 gt gt gt r
  • tkinter 非常慢 - 如何加快速度或使用不同的库?

    我正在使用 tkinter 生成 2D 形态图 我发现它非常慢 例如 此脚本在我的 8 核 Xeon 上花费了近 10 秒 usr bin env python3 import random import tkinter as tk A 3
  • CyclicDist 在多个语言环境中变慢

    我尝试使用以下方法实现矩阵乘法CyclicDist module 当我使用一种语言环境与两种语言环境进行测试时 一种语言环境要快得多 是因为两个 Jetson nano 板之间的通信时间真的很长还是我的实现没有利用这种方式CyclicDis
  • Java 8collect()仅isPresent()可选值[重复]

    这个问题在这里已经有答案了 在 Java 8 中是否有更优雅的方法来实现这一目标 list stream map e gt myclass returnsOptional e filter Optional isPresent map Op
  • 使用c实现rsa加密解密

    我正在尝试使用 Open SSL 编写 RSA 加密和解密的 C 代码 但我不能这样做 我用谷歌搜索了它 但无论我从互联网上得到什么代码 它都超出了我的想象 main函数在这里 这是我从堆栈溢出中得到的 我尝试使用它 但它不起作用 可能是我