【问题标题】:Shamir's Secret Sharing using Bignum or Bigint or ....?Shamir 的秘密共享使用 Bignum 或 Bigint 还是 ....?
【发布时间】:2013-01-28 18:08:45
【问题描述】:

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

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

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

有什么建议吗?蒂亚!

【问题讨论】:

  • 一个快速的 google 产生了多个结果,包括 C 和 Java 的结果。你为什么要实现这个?出于学习目的,我会推荐一种具有大数字作为语言特性的语言(直接或使用运算符重载)或至少具有良好的内置类型(Java 中的BigInteger)。任何东西都可以与 C 交互,但在这方面,某些语言会比其他语言更难使用。
  • 不要忘记将cryptography标签添加到这样的问题中。

标签: cryptography openssl biginteger bignum


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 有人在家吗?答案有什么问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2012-11-08
    • 2017-04-20
    相关资源
    最近更新 更多