【发布时间】:2014-03-14 16:31:17
【问题描述】:
我希望能够将 OpenSSL - Ruby 中 Elliptic Curve 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)作为Alices的私有值。但是要先点击secp1284r1按钮获得相同的曲线参数,再点击Compute Public按钮。
这将从输入的私钥生成一个公钥。但是,Ruby OpenSSL 文档并没有真正的帮助,我一直在弄清楚如何转换上面生成的公钥:
499599043529551953518354858381998373780459818901085313561109939106744612770290
变成这样(从在线网站上看到):
x: 107060165679262225845922473865530329196
y: 109296969851421346147544217212275741170
我假设通过正确转换一个,它可以以某种方式变得等于另一个,因为它们具有相同的曲线参数。还是我错了? (也因为point_conversion_form的默认格式是:uncompressed,正如我刚刚测试过的)请帮忙。
附:您可能想知道为什么我需要将公钥转换为另一个。不,我真的不需要。我只想学习如何转换它,因为我将使用该方法来转换类似的东西。这是为了方便您的测试而简化的问题。
【问题讨论】:
标签: javascript ruby openssl elliptic-curve diffie-hellman