使用OpenSSL从文件中设置私钥和公钥

3

我正在制作一个程序,为发送方生成私钥和公钥priva和puba,为接收方生成私钥和公钥privb和pubb。然后我将每个密钥对导出到文件中,以下是我为发送方编写的部分代码:

BIGNUM *ppub_a,*ppriv_a;    
point = EC_KEY_get0_public_key(a);
ppub_a = EC_POINT_point2bn(group, point, POINT_CONVERSION_UNCOMPRESSED, ppub_a, ctx);
int kk, kk2;
ppriv_a = EC_KEY_get0_private_key(a);
kk = BN_print_fp(keypuba,ppub_a);
kk2 = BN_print_fp(keypriva, ppriv_a);

我需要这对私钥(priv)和公钥(pub),以及公钥B(十六进制文件pubb)来生成ECDH密钥,然后再生成AES密钥。然后加密一个文件。
我不知道如何获取并转换此十六进制文件为公钥,以便生成ECDH密钥。有人可以帮我吗?谢谢。
1个回答

0

由于您的代码示例中没有生成密钥或指定组,因此我无法确定问题所在:

"我不知道如何获取和转换这个十六进制文件..." 您是在生成文件时遇到了问题(例如keypuba为空或不包含密钥),还是在读取文件时遇到了问题,或者您只是不知道该如何继续进行?

顺便说一下,openssl有十六进制转大数的转换函数,但您可能不想手动计算自己的短暂Diffie Hellman参数,因为OpenSSL有一个ecies_encrypt()例程来处理这个问题,以及ecies_key_public_get_hex(EC_KEY *key)已经接受十六进制输入。

不幸的是,openssl库并不是作为通用加密API编写的,而是作为实现SSL的模块。当开发人员尝试使用openSSL调用时,最大的问题就是知道他们应该使用哪个接口以及哪个是内部接口,不应该使用。

除非您是专家并且有充分的理由自己编写ECIES版本,否则应使用内置调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接