【问题标题】:convert .key to .pem将 .key 转换为 .pem
【发布时间】:2013-01-07 14:30:48
【问题描述】:

我需要使用私钥进行加密,我正在尝试使用以下代码:

$content = file_get_contents("file.key");

$plaintext = "14d9df79-8c4c-4380-8444-d31e1fd3f78a";

openssl_private_encrypt($plaintext, $encrypted, $content);

$transfer = base64_encode($encrypted);

echo "text encrypted is:" . $transfer;  //encrypted string

我收到错误: openssl_private_encrypt(): 密钥参数不是有效的私钥

我必须对密钥文件做些什么吗?它是二进制的。

【问题讨论】:

  • 你说你的key不是pem格式的,这个文件是怎么来的?您使用什么 PHP 代码来创建密钥?
  • .key 文件是由另一个对其进行详细说明的实体发送的
  • 对不起,我正确,我生成了这个密钥文件
  • 与其他办公室提供的应用程序

标签: php encryption key private


【解决方案1】:

已解决 我只是使用

openssl pkcs8 .....

命令

希望这对其他人有用

【讨论】:

    【解决方案2】:

    首先,尝试使用 openssl 将密钥转换为 PEM 格式:

    openssl rsa -inform der -in file.key -outform pem -out filekey.pem
    

    接下来,使用openssl_pkey_get_private从 PEM 文件中提取私钥

    $key = openssl_pkey_get_private(file_get_contents("filekey.pem"));
    
    $plaintext = "14d9df79-8c4c-4380-8444-d31e1fd3f78a";
    
    openssl_private_encrypt($plaintext, $encrypted, $key);
    
    $transfer = base64_encode($encrypted);
    
    echo "text encrypted is:" . $transfer;  //encrypted string
    

    【讨论】:

    • 我正要发布这个函数 Martin,它已经在我的剪贴板中了 :)
    • ...但 user1873420 已经指出该文件不是 .pem 格式(openssl_pkey_get_private 需要)
    • 我试过你所说的,它是相同的消息:openssl_private_encrypt(): key param is not a valid private key in... 我看到了一些例子,他们使用了一个不是二进制的密钥文件,但以pem格式。这就是问题,如何将我的二进制密钥文件转换为 pem 文件,即带有文本可见字符的文件。谢谢马里奥
    • @user1873420:什么 php 函数以二进制格式导出密钥?我找不到它?
    • .key 文件给了我。它应该是私钥。
    【解决方案3】:

    我不知道任何使用 .key 扩展名的 x509 文件格式。有 pem(这是您需要加载到 openssl 中的格式)、DER(文件可能具有 .der、.crt 或 .cer 扩展名)或 PKCS#12 (.pfx .p12)。 可能是 DER 或 PKCS#12:

     openssl pkcs12 -in file.key -out file.pem -nodes
    

    ...将 PKCS#12 转换为 file.pem,

    openssl x509 -inform der -in file.key -out file.pem
    

    ...转换 DER 文件。如果文件格式错误,他们会报告错误。 OTOH,您可以只使用“文件”命令来找出文件类型。 (这是假设你有一个 Posix / Linux 系统——你没有说)。

    或者你可以问问给你的人它是什么格式。

    【讨论】:

    • 给我的所有信息都是 x.509 证书版本 3,这是否消除了我的疑问?
    • 否 - x509 不是文件格式 - 它定义了存储在文件中的数据。就像文字处理器文档和 .doc 文件之间的区别一样。
    • SORRY,我生成了这个 .key 文件
    • 第一个发送了很多错误,第二个发送了“无法加载证书”,我已经向其他办公室询问了.key文件的格式,它是私钥(我生成了它)
    猜你喜欢
    • 2013-11-27
    • 2020-05-08
    • 2021-06-05
    • 2020-02-13
    • 1970-01-01
    • 2012-08-13
    • 2015-01-30
    • 2016-01-30
    • 1970-01-01
    相关资源
    最近更新 更多