在创建ECC密钥时,PHP openssl_pkey_new()引发错误

时间:2018-11-03 06:06:39

标签: php

$keyPair = openssl_pkey_new(array(
        "curve_name" => prime256v1,
        "private_key_type" => OPENSSL_KEYTYPE_EC,
    ));

openssl_pkey_export($keyPair,$private_key);

print_r($private_key)

密钥仍会生成,但是会出现错误

  

警告:使用不确定的常数prime256v1-假定为'prime256v1'   (这会在将来的PHP版本中引发错误)   GenPrivateKey.php

----- BEGIN EC PRIVATE KEY ----- MHcCAQEEIJTOhwzhTFjizqUyDwjh5eZcLBxyvcSG3WYze3HLWzrfoAoGCCqGSM49 AwEHoUQDQgAEGbzAL8sbxkb99V18s4 + M04 + v3k3QKhmTB3t4XKkGyAHPzycwkFu2 K + JI1YDSoJeMvVyZB8Pd / 5GsOzFUM4cFYA == ----- END EC PRIVATE KEY -----

有人知道为什么以及如何消除此警告吗?

谢谢

1 个答案:

答案 0 :(得分:0)

基于openssl_pkey_new()

的文档
  

说明

     

资源openssl_pkey_new([array $ configargs])

     

参数

     

configargs

     

您可以微调密钥生成(例如   指定位数)使用configargs。参见openssl_csr_new()   有关configargs的更多信息。

它要么需要像:-

$keyPair = openssl_pkey_new(array(
    "curve_name" => 'prime256v1',
    "private_key_type" => OPENSSL_KEYTYPE_EC,
));

或:-

$curve_names = openssl_get_curve_names(); //get all curve names
$keyPair = openssl_pkey_new(array(
    "curve_name" => $curve_names[19], //use your one
    "private_key_type" => OPENSSL_KEYTYPE_EC,
));

参考:-openssl_get_curve_names

注意:-打开此链接openssl_csr_new(),您可以看到以下内容:

enter image description here