将 PEM 编码的 RSA 公钥转换为 AsymmetryKeyParameter

2023-12-10

我正在尝试创建一种方法来构造AsymmetricKeyParameter来自 PEM 编码public钥匙。很遗憾,pemReader.ReadObject()返回空值。

这是私钥的有效解决方案:将 PEM 编码的 RSA 私钥转换为 AsymmetryKeyParameter

这个方法有什么问题吗?

static AsymmetricKeyParameter ReadPublicKeyFromPemEncodedString(string pemEncodedKey)
{
    AsymmetricKeyParameter result = null;
    using (var stringReader = new StringReader(pemEncodedKey))
    {
        var pemReader = new PemReader(stringReader);
        var pemObject = pemReader.ReadObject(); // null!
        result = ((AsymmetricCipherKeyPair)pemObject).Public;
    }

    return result;
}

这是我正在测试的 PEM 编码公钥。我尝试过不加注释并删除 SSH2。

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20170608"
AAAAB3NzaC1yc2EAAAABJQAAAQEAk0AmagKx285Ufbri/olc+f3WagL1Ho+DrYdD
SbuU7cJAq+uD9xGvvP9m2JavSP4wO9i9pB/cmCFMPoIj3oGJt1/cnLb/U2juneOw
6Uo0N3F8TXdyXfZNAIPhq/jw0YfIypTFTTvFkKXfTArIwW/bQBW8/dujFR8i5CxP
jRKRDOBEy0PPOLJDD0iUr9GX/h/EO4jQ7B/GszjhPiPx+gJCilaMY+jrSczjxpsK
OXzpZEdT1NqMrzgvIZPHYhQzAiw9vQzov3vezDwKgKcRrUixZ2B8uiEQNn7Wa2Qz
WF3vL+6CGflFNYQcc0leDQBe86baYhCollouP4jfaH9KcMkYYw==
---- END SSH2 PUBLIC KEY ----

Bouncy castle 只是不理解这种格式的公钥(SSH2)(您可以通过查看源代码来验证这一点PemReader如果你愿意的话)。不幸的是,我不知道如何在 C# 中将其转换为适当的格式,但您可以使用许多工具来完成此操作,例如使用 ssh-keygen(也可在 Windows 的 gitbash 中使用)或 openssl。转换为 PEM 后,您的公钥将如下所示:

-----BEGIN RSA PUBLIC KEY-----
MIIBCAKCAQEAk0AmagKx285Ufbri/olc+f3WagL1Ho+DrYdDSbuU7cJAq+uD9xGv
vP9m2JavSP4wO9i9pB/cmCFMPoIj3oGJt1/cnLb/U2juneOw6Uo0N3F8TXdyXfZN
AIPhq/jw0YfIypTFTTvFkKXfTArIwW/bQBW8/dujFR8i5CxPjRKRDOBEy0PPOLJD
D0iUr9GX/h/EO4jQ7B/GszjhPiPx+gJCilaMY+jrSczjxpsKOXzpZEdT1NqMrzgv
IZPHYhQzAiw9vQzov3vezDwKgKcRrUixZ2B8uiEQNn7Wa2QzWF3vL+6CGflFNYQc
c0leDQBe86baYhCollouP4jfaH9KcMkYYwIBJQ==
-----END RSA PUBLIC KEY-----

只需稍加更改,您当前的代码就会正确处理它:

var pemReader = new PemReader(stringReader);
var pemObject = pemReader.ReadObject(); // null!
// it's already AsymmetricKeyParameter
result = ((AsymmetricKeyParameter)pemObject);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 PEM 编码的 RSA 公钥转换为 AsymmetryKeyParameter 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 如何使用 python.logging 模块列出所有现有记录器

    Python 有没有办法获取所有已定义记录器的列表 我的意思是 是否存在诸如logging getAllLoggers 这将返回一个列表Logger物体 我搜索了 python logging 文档但找不到这样的方法 记录器由一个层次结构保
  • 使用对象重载 Typescript 函数

    我有一个接受对象作为唯一参数的函数 例如 interface MyMap
  • MySQL之谜:空值与非空字符串没有什么不同

    为什么此查询返回 0 行 select t f1 t f2 from select null f1 a f2 from dual t where t f1 lt gt t f2 这是我的复杂查询的精炼版本 我想比较两个包含一对一相关数据的表
  • 如何使用 PHP 将 HTML 表单数据传递到 MYSQL 数据库并将数据返回到浏览器

    我正在尝试使用PHP将 HTML 表单数据传递给MYSQLdb 并将数据返回给浏览器 通过提交检查的权限 M1 M2 MN1 我想显示拥有这些权限的讲师的姓名 现在 请告诉我代码有什么问题
  • 如何绑定函数参数

    如何将参数部分绑定 应用到 R 中的函数 这就是我走了多远 然后我意识到这种方法行不通 bind lt function fun argNames lt names formals fun bindedArgs lt list binded
  • React-Native:当对齐项目设置为“center”时,宽度不会从父视图继承

    我再次尝试使用 React Native 这次专注于布局 并遇到了一个有趣的问题 如果我在父视图上设置alignItems center 则其下的子视图似乎没有正确设置宽度 此代码将生成一个占据整个屏幕的绿色框 React createCl
  • 使用 XYZ 坐标计算物体体积

    我的 Winforms 应用程序获取一个 CSV 文件 其中包含 3D 相机给出的 XYZ 坐标 利用这些坐标 我需要计算物体的体积 以立方分米 dm3 为单位 我不知所措 我不是数学专家 我希望成为一个库或一个算法来做到这一点 但我发现的
  • 嵌入图像在浏览器中显示时未在 Outlook 中显示?

    here i am trying to Embeds a image in my outlook but the image is not coming in outlook and when i do the view source an
  • 我的 fma() 坏了吗?

    在使用double fma double x double y double z 我期望一个非零d在下面的输出行中标有 It appears仅供内部使用long double精度而不是无限精度作为指定 The fma函数计算 x y z 四
  • PHP MYSQLI 行数不起作用没有错误

    当用户单击登录时 我有一个登录表单 checklogin php 被调用 它应该检查用户名和密码是否与数据库上的任何记录匹配 如果为 true 请执行其他操作 打印错误的密码或用户名 到目前为止 我得到了错误的密码用户名 即使它是正确的用户
  • 如何解决 MongoDB 中缺少事务的问题?

    我知道这里有类似的问题 但它们要么是告诉我如果我需要事务或使用 切换回常规 RDBMS 系统原子操作 or 两阶段提交 第二种解决方案似乎是最好的选择 第三个我不想遵循 因为似乎很多事情都可能出错 而且我无法在每个方面都进行测试 我很难重构
  • 迭代 numpy 数组

    有没有更简洁的替代方案 for x in xrange array shape 0 for y in xrange array shape 1 do stuff x y 我想出了这个 for x y in itertools product
  • 在Python中获取打开的窗口列表

    我正在用 Python 编写一个应用程序 它必须能够将密钥或文本发送到另一个应用程序 例如 如果我打开了 Firefox 我应该能够向它发送一个 URL 以打开它 我已经有了 SendKeys 模块 并且我也阅读了有关 win32 模块的信
  • 在多线程系统中使用静态 java.sql.Connection 实例是否安全?

    我正在 Tomcat 上运行一个 Web 应用程序 我有一个处理所有数据库查询的类 该类包含Connection返回查询结果的对象和方法 这是连接对象 private static Connection conn null 它只有一个实例
  • 如何使用 CMake 获取多配置生成器和基于 makefile 的目标文件的路径?

    我想生成一个模块定义文件基于动态方式的目标文件中可用的所有符号 考虑GTKMM s gendef 为此 我愿意add custom command for PRE LINK目标的一步 不过 貌似没有easy使用 CMake 获取所有对象文件
  • 仅在 python 文件中强制使用“空格”或“制表符”?

    在Python中 是否有一种方法可以在每个文件的基础上强制使用空格或制表符缩进 嗯 也许 强制 太强了 更像是 建议 我不断收到带有混合缩进的补丁文件 这很烦人 至少可以说 Python 本身可以判断何时出现问题 但我正在编辑器级别搜索一些
  • 用密码保护 php 页面的简单方法

    我有一个页面想要用密码保护 我尝试过进行 HTTP 身份验证 但由于某种原因它在我的主机上不起作用 还有其他快速 且简单 的方法来做到这一点吗 谢谢 这并不是最强大的密码保护 因此请不要使用它来保护信用卡号码或非常重要的东西 只需将以下所有
  • 构造函数中应该完成多少工作?

    是否应该在构造函数中执行可能需要一些时间的操作 或者是否应该构造对象然后稍后初始化 例如 当构造表示目录结构的对象时 应该在构造函数中完成对象及其子对象的填充 显然 目录可以包含目录 目录又可以包含目录 依此类推 对此有什么优雅的解决方案
  • 如何根据电子邮件地址获取 Twitter 用户名?

    是否有一个 API 可能由 Twitter 提供 但不一定 可以为我提供的每个电子邮件地址提供 Twitter 用户名 Twitter对此问题的官方回应如下 http code google com p twitter api issues
  • 将 PEM 编码的 RSA 公钥转换为 AsymmetryKeyParameter

    我正在尝试创建一种方法来构造AsymmetricKeyParameter来自 PEM 编码public钥匙 很遗憾 pemReader ReadObject 返回空值 这是私钥的有效解决方案 将 PEM 编码的 RSA 私钥转换为 Asym