1

我有一个使用 C 语言中 OpenSSL 的 BIGNUM 库的通用加密实现。标准解密工作正常,但我也想实现 Shamir 的秘密共享 (SSS)。

我遇到的问题是 BIGNUM 只支持整数,作为 SSS 的拉格朗日插值的一部分,我需要乘以负值。

有没有办法做到这一点?否则:我可以用另一种语言(python?)做我的 SSS,只要它能够与 OpenSSL 产生的 BIGNUM 交互。

有什么建议么?蒂亚!

4

2 回答 2

2

当您查看 OpenSSL 中的 BIGNUM 结构时,您会发现一个名为neg. 如果 BIGNUM 对象表示负数,neg则将设置为 1。此外,该bn_mul()函数正确处理负数的乘法。所以你可以用 OpenSSL 实现 SSS,没问题!

于 2013-09-10T03:55:22.740 回答
0

模运算(使用组)只提供积极的结果,所以我想你想使用非模运算?在这种情况下,您可以简单地保留一个单独的变量来指示该值是否为负。除了符号位之外,正乘的结果是相同的。

它不是尽可能干净的设计,但对于一些方法来说,它可能没那么重要。您可以创建单独的方法来模仿这些BN方法,但保存符号值的整数 (-10)1除外。

于 2013-02-15T14:39:57.947 回答