首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为给定的secp256r1私钥生成ECIES公钥

如何为给定的secp256r1私钥生成ECIES公钥
EN

Stack Overflow用户
提问于 2021-05-27 18:57:54
回答 1查看 297关注 0票数 0

如何为给定的secp256r1私钥生成ECIES公钥,比如在3 3GPP 33.501版本15.5.0版本15,C.3.4.2中定义的“配置文件B”?

如果提供了私钥F1AB1074477EBCC7F554EA1C5FC368B1616730155E0041AC447D6301975FECDA (来自上述规范的C.4.4 ),我如何导出公钥:

家庭网络公钥:

如果压缩:'0272DA71976234CE833A6907425867B82E074D44EF907DFB4B3E21C1C2256EBCD1',

否则未压缩:'0472DA71976234CE833A6907425867B82E074D44EF907DFB4B3E21C1C2256EBCD15A7DED52FCBB097A4ED250E036C7B9C8C7004C4EEDC4F068CD7BF8D3F900E3B4‘

我使用过Python套件,可以为概要文件A获得正确的结果。但是,我还没有能够为概要文件B修改它。我也向其他库/语言开放。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-17 13:45:04

在深入研究了密码学源代码之后,我想出了以下解决方案:

代码语言:javascript
复制
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives import asymmetric

priv_key = 'F1AB1074477EBCC7F554EA1C5FC368B1616730155E0041AC447D6301975FECDA'
privkey_int = int(priv_key, base=16)
privkey_ec = asymmetric.ec.derive_private_key(privkey_int, asymmetric.ec.SECP256R1())
pubkey_ec = privkey_ec.public_key()
pubkey_bytes = pubkey_ec.public_bytes(
    encoding=serialization.Encoding.X962, 
    format=serialization.PublicFormat.CompressedPoint
)
print(binascii.hexlify(pubkey_bytes).decode('utf-8'))
'0272DA71976234CE833A6907425867B82E074D44EF907DFB4B3E21C1C2256EBCD1'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67728373

复制
相关文章

相似问题

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