从 EVP_PKEY 密钥对中提取公钥?

2024-01-04

我正在使用 OpenSSL 的高级在我的应用程序中实现加密/解密方案EVP_*()函数,因此我可以轻松切换实际使用的算法,而无需更改 API 调用。

我可以创建一个密钥pair相对容易:

// dumbed down, no error checking for brevity
EVP_PKEY * pkey;
// can change EVP_PKEY_RSA to something else here
EVP_PKEY_CTX * context = EVP_PKEY_CTX_new_id( EVP_PKEY_RSA, NULL );
EVP_PKEY_keygen_init( ctx );
// could set parameters here
EVP_PKEY_keygen( context, &pkey );
// ...
EVP_PKEY_CTX_free( context );

pkey现在持有钥匙pair,即秘密密钥和公钥。这对secret事情的一面,但显然我想提取仅公钥部分用于公共方面。

我能够找到RSA 特定函数 https://stackoverflow.com/questions/22521324,但没有使用高级EVP_*() API.

Help?


您可以使用以下方法将公钥和私钥分开以供将来使用。

int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
                    unsigned char *kstr, int klen,
                    pem_password_cb *cb, void *u);

 int PEM_write_PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
                    unsigned char *kstr, int klen,
                    pem_password_cb *cb, void *u);
EVP_PKEY *PEM_read_bio_PUBKEY(BIO *bp, EVP_PKEY **x,
                    pem_password_cb *cb, void *u);

 EVP_PKEY *PEM_read_PUBKEY(FILE *fp, EVP_PKEY **x,
                    pem_password_cb *cb, void *u);

 int PEM_write_bio_PUBKEY(BIO *bp, EVP_PKEY *x);
 int PEM_write_PUBKEY(FILE *fp, EVP_PKEY *x);

详细信息请参考<openssl/pem.h>.

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

从 EVP_PKEY 密钥对中提取公钥? 的相关文章

  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 无法使用 Ninject 将依赖项注入到从 Angular 服务调用的 ASP.NET Web API 控制器中

    我将 Ninject 与 ASP NET MVC 4 一起使用 我正在使用存储库 并希望进行构造函数注入以将存储库传递给其中一个控制器 这是实现 StatTracker 接口的上下文对象 EntityFramework public cla
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS

随机推荐

  • Mathematica:如何清除符号的缓存,即取消设置无模式的 DownValues

    我是一个糟糕的缓存器 有时 当没有人在看时 我会缓存结果而不包含完整的上下文 如下所示 f x f x x a a 2 f 1 DownValues f Out 2 HoldPattern f 1 gt 3 HoldPattern f x
  • InnoDB Write Log效率太高超过100%(1953.15%)?

    我的服务器上有 MariaDB 具有 16 32 个 CPU 核心 运行 mysqltuner 时一切似乎都正常 除了InnoDB写日志效率 采取1953 15 想知道这正常吗 或者有什么解决方案可以解决这个问题吗 感谢您的建议 InnoD
  • C++——如何重载运算符+=?

    鉴于以下代码片段 class Num public Num int iNumber 0 m iNumber iNumber Num operator const Num rhs this gt m iNumber this gt m iNu
  • 带图像的 Xamarin Forms ListView |文字|时间

    我目前正在使用 xamarin 表单构建一个混合应用程序 我正在尝试构建一个列表视图 显示带有图标和时间戳的错误 这是我想重新制作成 xamarin 形式的概念设计 我用了一个ImageCell尝试让带有一些文本的图标正常工作 但现在我想在
  • MongoDB 中复合 _id 的预期行为?

    我有一个包含 3 个数字属性的复合 id id KeyA 0 KeyBOARD 0 Key 0 相关数据库的 KeyA 有 200 万个相同值 KeyB 有 50 万个相同值的集群 我的理解是 我可以使用以下命令有效地查询 KeyA 和 K
  • 如何在 JupyterLab 中拆分和合并单元格

    In Jupyter实验室 https jupyterlab readthedocs io en latest 给定以下代码单元格 如何将其拆分为多个单元格 同样 给定以下单元格 如何将它们组合成单个单元格 直接使用 JupyterLab
  • opencv颜色检测

    使用opencv 可以在图像或视频帧中检测某种颜色 在一定范围的rgb值之间 吗 您需要定义 RGB 阈值 并处理图像中适合定义的像素 希望不是整个图像 而是较小的感兴趣区域 可能是移动的前景形状 与所讨论的内容类似here http ww
  • Symfony2:验证因第一个错误而停止

    看来 validator gt validate class Symfony2 的验证服务 http symfony com doc current book validation html在 if 返回之前运行所有验证检查 error班级
  • 尽管 rasterized=True,为什么 matplotlib 图文件大小很大?

    一个简单的例子 from matplotlib pyplot import plot savefig from numpy random import randn plot randn 100 randn 100 500 k alpha 0
  • 智能生成String排列组合的方法

    String database a b c 我想根据给定生成以下字符串序列database a b c aa ab ac ba bb bc ca cb cc aaa 我只能想到一个相当 虚拟 的解决方案 public class JavaA
  • 为什么 findstr 不能正确处理大小写(在某些情况下)?

    在 cmd exe 中编写最近的一些脚本时 我需要使用findstr使用正则表达式 客户需要标准 cmd exe 命令 无 GnuWin32 Cygwin VBS 或 Powershell 我只是想知道变量是否包含任何大写字符并尝试使用 g
  • 在 C# 中绘制到新“层”

    构建一个小绘画程序并尝试合并图层的概念 我使用 PictureBox 控件来显示图像 并从 PictureBox 显示的图像中获取 Graphics 对象并绘制到该对象 我的问题是我试图弄清楚如何绘制覆盖在图片框顶部的新 Graphics
  • 我可以以纵向模式播放视频吗?

    谁能解释一下如何在 iPhone 设备上以纵向模式播放视频 如果您提供一些示例代码以供参考 将会非常有帮助 提前致谢 如果您想使用 MPMoviePlayerController 以纵向模式显示电影 那就更好 让您的视频旋转 90 度 以便
  • Oracle 行争用导致高吞吐量 JMS 应用程序中的死锁错误

    Summary 我有兴趣了解高吞吐量应用程序的最佳实践是什么 这些应用程序具有批量消息试图更新同一行并出现 Oracle 死锁错误的情况 我知道您无法避免这些错误 但是如何优雅地从这些错误中恢复 而不被一次又一次发生的此类死锁错误所困扰 D
  • iOS 熄屏后如何继续监控 iBeacon?

    我正在开发一个 iOS 应用程序来监控 iBeacons 它在前景和背景中都表现良好 我还需要它即使在屏幕关闭时也能保持监控 现在我的问题是 当我用肩部按钮关闭屏幕时 NSLog显示iBeacon信号相应地关闭 RSSI 0 beacon
  • 导航抽屉覆盖操作栏

    我想在我的应用程序中添加导航抽屉 但是我不希望导航抽屉覆盖我的操作栏 操作栏应该始终可见 我搜索了互联网 从 stackoverflow 和一些博客中得到了一些解决方案 但都是相同的 我参考了这个解决方案使用没有 TitleBar 或 Ac
  • 返回列表到 ajax mvc3

    我正在研究MVC3以下是我的控制器 public List
  • 如何构造一个充满一些统一值的 std::array ?

    std array可以用特定值构造 在使用较新的 C 版本的编译时 例如 std array a 1 4 9 但是 它没有构造函数 也没有标准库命名的构造函数习惯用法 采用单个值并复制它 即我们没有 std array
  • 在存在可选参数的情况下如何处理省略号 (...)?

    当我在函数定义中使用可选参数时 我遇到省略号问题 为了澄清 我定义了以下函数 func1 lt function x x 2 2 func3 lt function fun arg curve user arg curve user exp
  • 从 EVP_PKEY 密钥对中提取公钥?

    我正在使用 OpenSSL 的高级在我的应用程序中实现加密 解密方案EVP 函数 因此我可以轻松切换实际使用的算法 而无需更改 API 调用 我可以创建一个密钥pair相对容易 dumbed down no error checking f