gpt4 book ai didi

javascript - 为什么本站的ECC-DH对称 key 与OpenSSL不一样

转载 作者:行者123 更新时间:2023-11-28 01:27:50 25 4
gpt4 key购买 nike

我正在使用(this site's) Javascript 库和 OpenSSL Ruby 用于计算椭圆曲线 Diffie Hellman 的对称 key 。

但是,从我的结果来看,OpenSSL Ruby 仅生成了一个 key ,这与网站上具有 X 和 Y 对称 key 的 key 不同。我很困惑,因为我的 OpenSSL 对称 key 与网站上的 x 和 y 之一都不匹配。

我使用secp224r1曲线获得的对称(共享 secret ) key :

Ruby OpenSSL

   13506351678569412185536677668115375188438201041599149052762191980775

使用站点的 JS 库

x: 26210366144026557327555572210249241206666031403062020900473236895358
y: 19676808255388748321882118528911150828003358302170965920476006073155

我的问题是:

1) 为什么 OpenSSL Ruby 只生成一个 key ,而该大小会生成两个 key :x 和 y(因为我假设 x 和 y 不会相互连接,因为与Ruby 对称 key )

2) 有没有一种方法可以相互转换两个对称 key (上面的 OpenSSL 和 JSBN-EC 库)?我所有的转换尝试都失败了。

我已经为使用 JSBN-EC 库实现 Ruby OpenSSL 奋斗了一个星期了。我也尝试过(SJCL library)但结果相似(对称 key 不匹配)。请帮忙。

最佳答案

我现在已经成功地通过客户端(JSBN-EC)和服务器 OpenSSL Ruby 上的工作对称 key 解决了这个问题

我发现我的问题其实出在代码本身。修复后,我最终在 OpenSSL Ruby 上得到了一个对称 key ,如下所示:

#Ruby: OpenSSL
...
...
symm_key = ec.dh_compute_key(point)
symm_key.unpack('B*').first.to_i(2) #Converts to binary, then to integer
#--> 6922380353406615622038660570577625762884344085425862813095878420328

在客户端使用 JSBN-EC

#Javascript: JSBN-EC
...
...
var curve = get_curve();
var P = new ECPointFp(curve,
curve.fromBigInteger(server_pub_key_x),
curve.fromBigInteger(server_pub_key_y));
var a = client_priv_key;
var S = P.multiply(a);

console.log('SYMM_KEY X: '+S.getX().toBigInteger().toString());
//--> 6922380353406615622038660570577625762884344085425862813095878420328
console.log('SYMM_KEY Y: '+S.getY().toBigInteger().toString());
//--> 14426877769799867628378883482085635535383864283889042780773103726343

因此从表面上看,与Ruby OpenSSL值匹配的对称 key 是JSBN-EC对称 key 的X值

6922380353406615622038660570577625762884344085425862813095878420328
==
6922380353406615622038660570577625762884344085425862813095878420328

我不知道现在的 Y 值是多少。看来我不需要它了。干杯! :)

关于javascript - 为什么本站的ECC-DH对称 key 与OpenSSL不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483036/

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