首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL支持ECDH吗?

OpenSSL支持ECDH吗?
EN

Stack Overflow用户
提问于 2019-05-20 13:43:02
回答 1查看 867关注 0票数 0

openssl_dh_compute_key()让我觉得OpenSSL没有ECDH。它只谈论DH,而不是ECDH。此外,公钥基本上只是基256中的素数,这里有关于如何删除--开始公钥--部分公钥的具体说明,就好像它不受支持一样。另外,从技术上讲,字符串以-开始

假设ECDH密钥与ECDSA密钥相同,那么ECDH的公钥由X、Y坐标和曲线(无论是指定的还是指定的曲线)组成,并且不清楚公钥需要什么样的格式才能使openssl_dh_compute_key()工作。

尽管如此,我还是试过了,令我惊讶的是,我没有得到一个错误,但我也没有得到任何输出。

代码语言:javascript
复制
$public = '-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkldhVs+UpzZ/E6hYF536mSYvdnfN
oEa/Idsfu7pBEcqPGHTsp+zDM/rquKwr8eoxn554LYw/3udRgzEpHk4vag==
-----END PUBLIC KEY-----';

$private = openssl_pkey_get_private('-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgF1ZD0LhQm5q71gL9
O+yzfX8g/sdYTBz/50nkw6wrE16hRANCAAQeZkUZ3ey7W5Czz52pOLmgSBHlnI3u
9gLcbr9NVCecEstDR0EK2+fJMfokogfW+RdoEJKN0qLdHilGPGHV/aq1
-----END PRIVATE KEY-----');

$s = openssl_dh_compute_key($public, $private);

echo bin2hex($s);

echo "\n\n";

echo openssl_error_string();

$s是假的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-20 19:44:05

OpenSSL确实支持ECDH。我猜PHP并没有像DH那样公开支持ECDH所需的ECDH方法。

我的猜测是,建议使用EVP功能,这将在一定程度上抽象DH指定,而ECDH_compute_key的使用并没有真正的文档化。

看起来PHP没有公开足够的EVP功能来支持ECDH。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56222220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档