使用 OpenSSL.NET 和现有密钥解密 RSA

2024-01-02

我有以下代码使用 OpenSSL.Net 生成 OpenSSL RSA 公钥和私钥。但是,我似乎找不到使用给定私钥解密数据的方法。我知道如果我调用生成密钥,然后调用相应的方法来加密和解密数据,它就可以正常工作。但是,如果我尝试从给定公钥的外部源解密某些内容,我该如何使用该密钥进行解密。

注意:请不要给出不使用 OpenSSL.NET 的示例。 Microsoft 加密提供程序比 OpenSSL 慢得多,无法满足我的速度要求。

Thanks!

public class AsymmetricKeyResult
{
    public string PublicKey { get; set; }
    public string PrivateKey { get; set; }

    public AsymmetricKeyResult(string publicKey, string privateKey)
    {
        this.PublicKey = publicKey;
        this.PrivateKey = privateKey;
    }
}

public static AsymmetricKeyResult GenerateAsymmetricKeys(int keyLength)
{
    RSA rsa = new RSA();
    rsa.GenerateKeys(keyLength, 0x10021, null, null);
    AsymmetricKeyResult kResult = new AsymmetricKeyResult(rsa.PublicKeyAsPEM, rsa.PrivateKeyAsPEM);

    return kResult;
}

我最终通过 OpenSSL.NET 的托管包装器上的对象浏览器弄清楚了这一点。这有效:

    public static byte[] AsymmetricEncrypt(string publicKeyAsPem, byte[] payload)
    {
        CryptoKey d = CryptoKey.FromPublicKey(publicKeyAsPem, null);
        RSA rsa = d.GetRSA();
        byte[] result = rsa.PublicEncrypt(payload, RSA.Padding.PKCS1);
        rsa.Dispose();
        return result;
    }

    public static byte[] AsymmetricDecrypt(string privateKeyAsPem, byte[] payload)
    {
        CryptoKey d = CryptoKey.FromPrivateKey(privateKeyAsPem, null);
        RSA rsa = d.GetRSA();
        byte[] result = rsa.PrivateDecrypt(payload, RSA.Padding.PKCS1);
        rsa.Dispose();
        return result;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OpenSSL.NET 和现有密钥解密 RSA 的相关文章

  • 未提供参数时如何指定 C# System.Commandline 行为?

    在我的控制台应用程序中 当未提供控制台参数时 将执行我指定列表 在本例中为参数 3 的任何处理程序 调用该处理程序时 布尔参数设置为 false 但对我来说 根本不调用它更有意义 如何防止这种情况发生并显示帮助文本 using System
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • C中的malloc内存分配方案

    我在 C 中尝试使用 malloc 发现 malloc 在分配了一些内存后浪费了一些空间 下面是我用来测试 malloc 的一段代码 include
  • 在 LINQ 中按 Id 连接多表和分组

    我想按categoryId显示列表产品的名称组 这是我的代码 我想要我的视图显示结果 Desktop PC HP Red PC Dell Yellow PC Asus Red SmartPhone Lumia 720 Blue 我的组模型
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 如何使用 LINQ2SQL 连接两个不同上下文的表?

    我的应用程序中有 2 个数据上下文 不同的数据库 并且需要能够通过上下文 B 中的表的右连接来查询上下文 A 中的表 我该如何在 LINQ2SQL 中执行此操作 Why 我们正在使用 SaaS 产品来跟踪我们的时间 项目等 并希望向该产品发
  • 将 Word 文档另存为图像

    我正在使用下面的代码将 Word 文档转换为图像文件 但是图片显得太大 内容不适合 有没有办法渲染图片或将图片保存到合适的尺寸 private void btnConvert Click object sender EventArgs e
  • 为什么调用非 const 成员函数而不是 const 成员函数?

    为了我的目的 我尝试包装一些类似于 Qt 共享数据指针的东西 经过测试 我发现当应该调用 const 函数时 会选择它的非 const 版本 我正在使用 C 0x 选项进行编译 这是一个最小的代码 struct Data int x con
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • “接口”类似于 boost::bind 的语义

    我希望能够将 Java 的接口语义与 C 结合起来 起初 我用过boost signal为给定事件回调显式注册的成员函数 这非常有效 但后来我发现一些函数回调池是相关的 因此将它们抽象出来并立即注册所有实例的相关回调是有意义的 但我了解到的
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler

随机推荐

  • 通过 SSH 隧道进行 MySQL 复制

    我在通过以下方式设置复制时遇到问题SSH尽管花了很多时间阅读官方文档 文章和 SO 问题 但我仍然在隧道中 我的主人是192 168 0 105奴隶是192 168 0 104 我已经通过以下方式设置了 SSH 隧道 ssh L 3305
  • 在构造函数*内部*分配原型方法 - 为什么不呢?

    从风格上来说 我更喜欢这种结构 var Filter function category value this category category this value value product is a JSON object Filt
  • 备份(或者同步)开发机器的好方法是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我广泛使用源代码控制来处理与我正在从事的项目相关的任何内容 源代码 文档等 并且我从未以这种方式丢失过任何东西 然而 我的开发机器上发生过两三次崩溃
  • React 应用程序返回 500 内部服务器错误

    我有一个使用 create react app 创建的 React 应用程序 我跑完之后npm run build 并将应用程序部署为静态站点 一切正常 除了当我在索引以外的路线上刷新页面时 它会失败并显示500 internal serv
  • MySQL 整数索引与日期时间索引

    首先我要说的是 我已经看过许多类似的问题 但所有这些问题都与Timestamp and DateTime没有索引的字段类型 至少这是我的理解 众所周知 DateTime 有一定的优势 将它们放在一边一分钟 假设桌子的引擎是InnoDB wi
  • 如何同时在同一窗口中显示和更新两个 matplotlib 图?

    我实现了一个 GUI 它显示两个下拉菜单 您可以在其中选择要显示的两组不同的图表 但是 当我使用以下代码创建图表时 import matplotlib pyplot as plt from matplotlib backends backe
  • 空指针访问:变量在此位置只能为空

    for int i 0 i
  • 如何使用 pprint 格式化多行地图?

    pprint的文档有点像砖墙 如果你打印一张地图 它会打印成一行 如下所示 a b b c d e 相反 我希望像这样打印 可以选择使用逗号 a b b c d e 如何使用 pprint 来做到这一点 您可以设置 print right
  • wamp 服务器错误 #2002 无法打开 phpMyAdmin [重复]

    这个问题在这里已经有答案了 我已经安装了瓦普服务器我工作得很好 但现在我尝试打开php我的管理员但服务器显示此错误 错误 MySQL 说 文档 2002 无法建立连接 因为目标计算机主动拒绝连接 服务器没有响应 或者本地服务器的套接字配置不
  • 如何解决Flutter下拉按钮溢出问题?

    我创建了一个 Flutter 表单 并使用 flutter 构建了一个下拉按钮 我正在将本地儿子数据丢失到下拉列表中 我的下拉按钮中的一些项目很长 我使用 SafeArea 和 ListView 但右侧出现溢出 其他问题中未提及的部分解决方
  • 统计tableau中某列出现Null的次数

    我对 Tableau 比较陌生 我想知道是否有一种方法可以计算列中的空值 我有一个名为字符串类型的电子邮件的列 想知道有多少人尚未输入他们的电子邮件 即空 我尝试创建一个计算字段 计数 ISNULL 电子邮件 但这给了我总计数而不是空值计数
  • 在golang中为ws创建单元测试

    我使用 gorilla Web 套接字框架并使用以下客户端在本地运行 Web 套接字并进行调试 https github com gorilla websocket https github com gorilla websocket ws
  • Angular-CLI for Angular2如何加载环境变量

    我是 angular cli 的新手 想要通过 env 为我的 api 服务调用加载 url 例如 local http 127 0 0 1 5000 dev http 123 123 123 123 80 prod https 123 1
  • 如何仅在某些模式下启用空白模式

    我正在尝试获取 emacswhitespace mode仅在某些模式下自动启用 根据文档 启用global whitespace mode并设置whitespace global modes变量应该完全做到这一点 但我无法让它正常工作 In
  • 即使导入脚本也找不到 Scrollify 函数

    所以我尝试使用 Scrollify 这是一个用于滚动捕捉的 jQuery 插件 我导入 jQuery 没有问题 但无论我如何导入插件本身 我都会收到错误 Uncaught TypeError scrollify is not a funct
  • 如何在 Azure AD 加入设备上的任务计划程序中选择用户

    如何在已加入 Azure AD 的设备上选择 Azure AD 用户帐户 我刚刚遇到这个问题并使用以下步骤解决了它 在任务计划程序中正常创建任务 在安全选项中选择任何本地用户 将任务导出到 xml 文件 从任务计划程序中删除任务 打开cmd
  • (excel 2013) 带有 VLOOKUP 函数的 3D 公式

    前段时间我在这里问过类似的问题单元格位置相同的 3D 公式 https stackoverflow com questions 25352610 excel 2013 dynamic change of formula depending
  • 非常简单的c ++:fstream中的运算符>>在读取某些内容后是否会删除换行符?

    file in 12 13 main cpp fstream f file in ios in int n char c f gt gt n f get c 提取数字12后 下一个字符是什么 是换行符还是 1 如果我调用 getline 而
  • Android 数据绑定与自定义视图

    The Android 数据绑定指南 http developer android com tools data binding guide html讨论了活动或片段中的绑定值 但是有没有办法使用自定义视图执行数据绑定 我想做这样的事情
  • 使用 OpenSSL.NET 和现有密钥解密 RSA

    我有以下代码使用 OpenSSL Net 生成 OpenSSL RSA 公钥和私钥 但是 我似乎找不到使用给定私钥解密数据的方法 我知道如果我调用生成密钥 然后调用相应的方法来加密和解密数据 它就可以正常工作 但是 如果我尝试从给定公钥的外