【问题标题】:openssl create key error phpopenssl创建密钥错误php
【发布时间】:2013-06-14 03:46:21
【问题描述】:

我尝试了以下代码

// Create the keypair
$res=openssl_pkey_new();

// Get private key
openssl_pkey_export($res, $privatekey);

// Get public key
$publickey=openssl_pkey_get_details($res);
$publickey=$publickey["key"];

但我得到了这个错误

警告:openssl_pkey_export(): cannot get key from parameter 1 in ... 警告:openssl_pkey_get_details() 期望参数 1 是资源,布尔值在 ...

我已经取消注释 extension=php_openssl.dll 我的 php.ini 文件。当我签入 phpinfo() 时支持 openssl。没有困惑。我不知道如何解决这个问题。

【问题讨论】:

    标签: php openssl key


    【解决方案1】:

    检查以下产生的消息。

    var_dump(openssl_error_string());
    

    http://www.php.net/manual/en/function.openssl-error-string.php

    【讨论】:

    • 感谢您的回答,这是结果 string(51) "error:02001003:system library:fopen:No such process"
    【解决方案2】:

    $res 应该是一种资源。这是openssl_pkey_new() 的返回。请参阅Documentation。但它也可以是FALSE

    您经常看到的错误意味着创建资源的函数(此处为openssl_pkey_new())失败。正如文档所说,

    成功时返回 pkey 的资源标识符,否则返回 FALSE 错误。

    所以你需要检查错误。我不熟悉,但openssl_error_string 看起来很有希望。

    编辑响应:所以问题openssl-not-working-on-windows。这似乎是你的问题。进程找不到您的 openSSL 配置文件。阅读此OpenSLL Configuration guide by PHP

    建议,使用 while 循环来读取所有错误消息,如链接中所述。如果是同样的错误,请按照说明进行操作。

    【讨论】:

    • 感谢您的回答,这是结果 string(51) "error:02001003:system library:fopen:No such process"
    【解决方案3】:

    我认为phpseclib, a pure PHP RSA implementation tbh 可能会让您的运气更好。例如。

    <?php
    include('Crypt/RSA.php');
    
    $rsa = new Crypt_RSA();
    
    extract($rsa->createKey());
    
    echo "$publickey<br />$privatekey";
    ?>
    

    默认情况下会创建一个 1024 位密钥。如果您需要在默认设置 lmk 之外对其进行自定义。

    【讨论】:

      猜你喜欢
      • 2022-12-04
      • 1970-01-01
      • 2020-06-25
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      相关资源
      最近更新 更多