首页 > 解决方案 > 是否可以使用 PHP 中的内置 openssl_pkey_new 函数生成 ED25519 密钥对?

问题描述

我正在尝试使用 PHP 中的内置 openssl_pkey_new 生成 ED25519 私钥/公钥对但我无法正常工作。

不确定,但不可能吗?

使用 PHP-7.3.13 和 OpenSSL-1.1.1d。

<?php
...

// OpenSSL config
$openssl_config = array(
'curve_name' => 'ed25519', // <- not working
'private_key_type' => OPENSSL_KEYTYPE_EC
);

// Create OpenSSL keypair
$openssl_keypair = openssl_pkey_new($openssl_config);
openssl_pkey_export($openssl_keypair, $privatekey);
$openssl_details = openssl_pkey_get_details($openssl_keypair);
$publickey = $openssl_details['key'];

echo $privatekey;

echo $publickey;

...
?>

标签: phpopensslphp-openssl

解决方案


看起来不可能,请阅读https://www.php.net/manual/en/function.openssl-get-curve-names.php上的文档,没有 ED25519 曲线名称。

ED25519 用于签名,因此在 php.ini 中生成一个 ED25519 密钥对。使用“sodium_crypto_sign_keypair”功能。


推荐阅读