【发布时间】:2013-04-24 17:10:45
【问题描述】:
如何将两个 ECDSA 私钥/公钥对合二为一?我知道它是通过 openssl 中的模块化添加完成的,我只是不明白它是如何工作的。谁能给我解释一下?
【问题讨论】:
标签: c++ openssl addition ecdsa modular-arithmetic
如何将两个 ECDSA 私钥/公钥对合二为一?我知道它是通过 openssl 中的模块化添加完成的,我只是不明白它是如何工作的。谁能给我解释一下?
【问题讨论】:
标签: c++ openssl addition ecdsa modular-arithmetic
你可以通过添加两个私钥来做到这一点
privkey = privateA + privateB (mod order)
或者,在 OpenSSL 代码中:
BN_mod_add_quick(privkey, privateA, privateB, order);
这里order 是order = s - j 的最小数字,因此sP = jP 是椭圆曲线上的点P。你的新私钥的公钥是pubkey = privkey * G,或者:
EC_POINT_mul(group, pubkey, privkey, NULL, NULL, ctx);
order和生成点G的值是曲线参数,在创建和设置group(一个EC_GROUP对象)时设置。
【讨论】:
ECDSA 私钥 - 只是一个数字,基点的顺序。 您可以只添加两个私钥(即数字),减少和模基点顺序,并将基点取幂到这个顺序。 但是你为什么需要这个呢?
【讨论】: