使用 PHP 将 .key 文件从 DER 格式加载到 PEM

2023-12-13

我有一个进行转换的代码,但需要使用本机 PHP 函数来完成它,因为它没有激活对运行 exec 的支持:

exec("openssl pkcs8 -inform DER -in 'archivo.key' -out 'archivo.key.pem' -passin pass:'lacontrasena'");

有人可以帮我将其翻译成本地 PHP 函数吗?有可能openssl或图书馆。

//更新

这是我使用 der2pem 函数的代码:

function der2pem($der_data) {
   $pem = chunk_split(base64_encode($der_data), 64, "\n");
   $pem = "-----BEGIN PRIVATE KEY-----\n".$pem."-----END PRIVATE KEY-----\n";
   return $pem;
}
$keyfile = 'myFileDER.key';
$keyFileContent = file_get_contents($keyfile);
$pemContent = der2pem($keyFileContent);
file_put_contents('llavetemp.pem', $pemContent);

$private_key1 = openssl_pkey_get_private($pemContent);

var_dump($private_key1);

var_dump 返回布尔值 false


您可以轻松使用 uri2x 的答案和第一个谷歌结果中的一些信息。 PEM 只是二进制 DER 文件的 base64 编码形式。 添加了一些元数据,您可以用它做任何事情。

因此,如果您将函数(由 uri2x 发布!)修改为以下内容:

function der2pem($der_data, $type='CERTIFICATE') {
   $pem = chunk_split(base64_encode($der_data), 64, "\n");
   $pem = "-----BEGIN ".$type."-----\n".$pem."-----END ".$type."-----\n";
   return $pem;
}

你现在可以调用它:

$private_key=file_get_contents('archivo.key');
file_put_contents('archivo.key.pem',der2pem($private_key,'PRIVATE KEY');

您可以转换几乎所有需要在加密问题中传输的内容:

//certificates
$private_key=file_get_contents('certificate');
echo der2pem($private_key,'CERTIFICATE');//here, certificate isn't even required because it's the default
//GPG/PGP Public Keys
$pgp_public_key=file_get_contents('pgp_public_key');
echo der2pem($private_key,'PGP PUBLIC KEY BLOCK');
//CSR
$certificate_signing_request=file_get_contents('csr');
echo der2pem($private_key,'CERTIFICATE REQUEST');

...and many others!

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

使用 PHP 将 .key 文件从 DER 格式加载到 PEM 的相关文章

  • 如何在php中关闭夏令时

    我有这行代码将夏令时设置为 打开 将其设置为 关闭 的正确方法是什么 is daylight saving On rcmail config dst active bool date I date I 这是一个大写字母 i 当当前默认时区
  • 由于未定义符号,PECL solr 未加载:curl_easy_getinfo

    我正在尝试加载 PECL solr 扩展 我尝试使用 pecl install solr 并下载并使用 phpize configure make 来安装它 在这两种情况下 扩展安装时都没有错误 但在 apache 重新启动后 或在命令行上
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • php表格:每行显示3个单元格[重复]

    这个问题在这里已经有答案了 我看这里 数组放入每行 5 个单元格的表格中 https stackoverflow com questions 9099568 array into a table with 5 cells in each r
  • 在会话 cookie 中存储大量数据会产生什么影响?

    谁能解释一下在会话中存储大量数据的缺点或给我指出一些阅读材料 我也很感兴趣在会话中存储数据和从数据文件读取数据之间是否有任何区别 如果您在会话中存储大量数据 则输入 输出性能会下降 因为会有大量读取 写入 默认情况下 PHP 中的会话存储在
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • cURL 错误 77:设置证书验证位置时出错:CAfile

    我正在使用 Firebase php SDKlink https firebase php readthedocs io en latest index html并在 Windows 10 上的 XAMPP 服务器上使用 laravel 最
  • 重复使用相同的卷曲手柄。性能大幅提升?

    在 PHP 脚本中 我对不同的 URL 执行了许多不同的curl GET 请求 一百个 将重复使用来自curl init提高性能 还是与请求的响应时间相比可以忽略不计 我这么问是因为在当前的架构中保持相同的句柄并不容易 交叉发布自我应该关闭
  • Zend IMAP 搜索和过滤器

    我如何使用 Gmail 中的过滤器进行搜索 就像获取带有特定标签的电子邮件列表或来自特定电子邮件地址的邮件列表一样 我无法在文档中找到它 注意 我使用 oAuth 进行身份验证 我希望这与搜索无关 Gmail 上的标签实际上是 从 IMAP
  • 如何以编程方式获取 WooCommerce 中的所有产品?

    我想获取 WooCommerce 中的所有产品数据 产品 sku 名称 价格 库存数量 可用性等 我可以使用 wp query 来做到这一点吗 这样你就可以通过 wp query 获取所有产品 global wpdb all product
  • 使用 PHP 的 Google Glass GDK 身份验证

    我正在尝试点击此链接来验证 GDK 中的用户 https developers google com glass develop gdk authentication https developers google com glass de
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • 如何将 mysql 转换为 mysqli? [复制]

    这个问题在这里已经有答案了 我厌倦了将 mysql 转换为 mysqli 但似乎收到了很多错误和警告 连接到数据库没有问题 但其余代码似乎错误 我做错了什么 sql
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP中如何识别服务器IP地址

    PHP中如何识别服务器IP地址 对于服务器 ip 来说是这样的 SERVER SERVER ADDR 这是港口的 SERVER SERVER PORT
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web

随机推荐

  • C++:调整动态分配数组大小的正确方法是什么?

    在C中 我会使用realloc 在C 中 人们通常会考虑使用STLvector class 但是 如何在不使用上述任何解决方案的情况下正确调整 C 中数组的大小呢 没有好的等价物realloc在C 中 您需要手动复制数组并复制旧元素 幸运的
  • Angular 5 - 将组件选择器与 InnerHtml 绑定

    我有一个名为 app component1 的 component1 选择器 Component selector app component1 templateUrl test widget component html styleUrl
  • 为什么表单的析构函数被调用两次?

    这段带有入口点的代码调用了表单的析构函数两次 void Main array
  • 当从后台激活时,Firebase 应用程序在启动时崩溃

    我的 swift 应用程序中集成了 Firebase 所有初始化都是以编程方式完成的FirebaseApp config 被称为第一件事didLaunchWithOptions在 AppDelegate 中 但由于某些随机原因 每当应用程序
  • from django.utils.importlib import import_module ImportError:没有名为 importlib 的模块

    我是 Django 新手 我有一个 Django 休息项目 当我运行它时 错误显示为 from django utils importlib import import module ImportError No module named
  • ViewDidLoad / 卸载消息到超级?

    我注意到来自其他来源的代码 其中作者没有将消息添加到 super 中 如下所示 我通常将它们都添加 但我只是好奇它们的作用以及我总是添加它们是否正确 void viewDidLoad other code super viewDidLoad
  • 类 Illuminate\Support\Facades\RateLimiter 未找到

    我创建了我的 laravel 项目 如下所示 laravel new my app 这使用 Laravel 版本 8 创建了我的项目 由于我想使用 Laravel 7 所以我修改了composer json laravel framewor
  • EventSourceException:操作系统没有可用的可用缓冲区

    完整的异常文本是 EventSourceException 操作中没有可用的可用缓冲区 系统 例如事件发生率太快 由于递归 我调用此方法大约一百万次 它不会停止 我只是在 VS2013 的输出调试窗口中得到异常文本 但速度超级慢 priva
  • 使用准备好的语句插入 select MySQL

    我想知道我是否需要这样做 为了使其更安全 插入数据库的所有内容都是从用户发布的具有特定子句的另一个表中选择的 我用id对于身份 identity POST id stmt mysqli gt prepare INSERT into tabl
  • 为什么我点击的用户没有被删除?

    我无法删除我在页面上选择的那个 每次它都会删除列表中的第一个 不知道跟后台有没有关系 如果是这种情况 您必须告诉我 那么我会在后台将其记录下来 我的用户管理 js function UserManagement history const
  • 标准库如何实现std::swap?

    STL中的swap函数是如何实现的 是不是就这么简单 template
  • 正则表达式匹配电话号码?

    我想匹配可以包含字母和可选连字符的电话号码 这是有效的 333 WELL 这也是有效的 4URGENT 换句话说 最多可以有 1 个连字符 但如果没有连字符 则最多可以有 7 个 0 9 或 A Z 字符 我不知道如何在正则表达式中执行 i
  • Android EditText 提示使用与 EditText 相同的字体

    我已经为 EditText 定义了一种字体 现在 EditText 提示也显示该字体 但我需要为 EditText 提示使用不同的字体 有没有办法实现这一点 Android EditText 提示使用与 EditText 相同的字体 编辑文
  • 如何在 View / PartialView 中正确使用 javascript 命名空间

    我已经使用 MVC 一段时间了 但是自从我正在进行的项目开始顺风顺水以来 越来越多的人加入其中 由于我负责四处寻找一些 最佳实践 所以我特别警惕 JavaScript 可能被误用的情况 并且想找出让我们的视图和部分视图很好地发挥作用的最佳方
  • JQuery DataTables - 显示页面长度选项以及导出按钮

    我正在使用 DataTables 我想在中间的左侧导出按钮上显示页面长度选项 在表格顶部的右侧以及分页上方的表格底部显示搜索 字段 我的问题是 当我添加功能来显示 导出 按钮时 它们根本不显示 如果我使用 dom Bfrtip 则页面长度选
  • 使用 Scala 中现有的列表列表创建 Breeze DenseMatrix

    I ve a List List Int List List 1 2 3 0 0 0 0 0 0 List 0 0 0 1 2 3 0 0 0 List 0 0 0 0 0 0 1 2 3 我想创建一个 3 行 9 列的 Matrix De
  • istio AuthorizationPolicy拒绝规则问题

    我定义了以下第一个策略来拒绝命名空间 foo 中对工作负载 1 的所有请求 除非它们来自工作负载 2 或工作负载 3 尝试从工作负载 2 访问工作负载 1 时 我收到 RBAC 访问被拒绝 但是 当使用如下所示的 ALLOW 策略重写它们时
  • Android:通过POST发送图像

    我一直在寻找解决方案 并遇到了多部分和不同的设置 但我似乎无法让它正常工作 这是我到目前为止所拥有的 编辑 我收到的服务器端错误是 500 我认为这是因为我发送的数据对于一个请求来说太大或者格式不正确 ByteArrayOutputStre
  • 将背景放在线性布局上并占据几乎 3/4 的屏幕

    我已经尝试了其他帖子的各种帮助 将宽度设置为 0dp 等 但似乎没有任何效果 我有两种布局 第一个似乎仍然占主导地位 如果我在文本视图上放置背景颜色 它们就会表现出自己的行为并正确结束 然而 在线性布局上放置一个背景 它几乎占了屏幕的 3
  • 使用 PHP 将 .key 文件从 DER 格式加载到 PEM

    我有一个进行转换的代码 但需要使用本机 PHP 函数来完成它 因为它没有激活对运行 exec 的支持 exec openssl pkcs8 inform DER in archivo key out archivo key pem pass