gpt4 book ai didi

javascript - 如何格式化 OpenSSL key 以匹配在线示例 (JSBN-ECC)

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:05 24 4
gpt4 key购买 nike

我希望能够在 OpenSSL - Ruby 中将椭圆曲线 Diffie-Hellman 的公钥格式化为类似于此在线示例的格式 (link) ,因为我一直在使用那个 JS 库。

我下面的代码生成一个 OpenSSL::PKey::EC 公钥和私钥

#Ruby
ec = OpenSSL::PKey::EC.new('secp128r1')
ec.generate_key

ec.private_key
#--> 205607153615223513963863936713567041725

ec.public_key.to_bn
#--> 499599043529551953518354858381998373780459818901085313561109939106744612770290

尝试复制 205607153615223513963863936713567041725 上面的私钥并将其粘贴到网上 (link)作为爱丽丝的私有(private)值(value)。但是先点击secp1284r1按钮有相同的曲线参数,然后点击Compute Public按钮。

这将从输入的私钥生成公钥。但是,Ruby OpenSSL 文档并不是很有帮助,我一直在弄清楚如何转换上面生成的公钥:

499599043529551953518354858381998373780459818901085313561109939106744612770290

变成这样的东西(从在线网站上看):

x: 107060165679262225845922473865530329196
y: 109296969851421346147544217212275741170

我假设通过正确转换一个,它可以以某种方式变得与另一个相等,因为它们具有相同的曲线参数。还是我错了? (而且因为 point_conversion_form 的默认格式是 :uncompressed,正如我刚刚测试过的)请帮助。

附言您可能想知道为什么我需要将公钥转换为另一个。不,我真的不需要。我只想学习如何转换它,因为我将使用该方法来转换类似的东西。这是为了您的测试方便而简化的问题。

最佳答案

周杰伦,

您不应该觉得您的解决方案很奇怪,因为我认为对 ec.public_key.to_bn 的调用可能会遵守 rfc5480 section 2.2 re: Subject Public Keys 声明:

2.2. Subject Public Key

  • The first octet of the OCTET STRING indicates whether the key is compressed or uncompressed. The uncompressed form is indicated by 0x04 and the compressed form is indicated by either 0x02 or 0x03 (see 2.3.3 in [SEC1]). The public key MUST be rejected if any other value is included in the first octet.

假设是这种情况,并且由于您声明格式为 :uncompressed,您自己的回答对我来说完全有意义。感谢您发布! :)

关于javascript - 如何格式化 OpenSSL key 以匹配在线示例 (JSBN-ECC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com