首页 > 解决方案 > 加载 ECIES 公钥

问题描述

[生成的公钥如下 (https://jameshfisher.com/2017/04/14/openssl-ecc/)

Alice 生成她的私钥:

openssl ecparam -name secp256k1 -genkey -noout -out alice_priv_key.pem

Alice 从她的私钥中提取她的公钥:

openssl ec -in alice_priv_key.pem -pubout -out alice_pub_key.pem

当我需要使用公钥发送加密数据时,我在 C 中有一个应用程序。我正在尝试从公共(alice_pub_key.pem)文件加载数据。

我从( https://holtstrom.com/michael/tools/hextopem.php)将 PEM 文件转换为十六进制数据。

所以似乎我没有以正确的格式提供数据。谁能建议出了什么问题?

key = EC_KEY_new_by_curve_name(NID_secp256k1)
group = EC_KEY_get0_group(key)
pub_key = EC_POINT_new(group)
EC_POINT * point = EC_POINT_hex2point(group, ptr, pub_key, NULL)

这一点它的回归null

标签: encryptioncryptographypublic-key-encryptionelliptic-curve

解决方案


您可以尝试PEM_read_EC_PUBKEY来读取公钥。这避免了必须解析或重新编码公钥本身。

请注意,您可能需要最近的 OpenSSL;很难从文档中找出这个功能是什么时候引入的。


推荐阅读