Shamir的秘密分享使用Bignum或Bigint或......?

时间:2013-01-28 18:08:45

标签: cryptography openssl biginteger bignum

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

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

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

有什么建议吗? TIA!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

它不是一个尽可能干净的设计,但对于一些方法,它可能并不重要。您可以创建模仿BN方法的单独方法,除了包含符号值(-101)的整数。