【问题标题】:Finding additive inverse using OpenSSL BIGNUM使用 OpenSSL BIGNUM 查找加法逆
【发布时间】:2012-09-22 17:42:55
【问题描述】:

我需要计算 C 中大 (BIGNUM) 素数的加法逆。所以,基本上,我需要乘以 -1。有没有一种我错过的简单方法可以做到这一点?我在文档中看不到任何功能。我想出的只是这个,我认为这很丑:

//bigprime = my big prime
inverse = BN_new();
one = BN_new();
negOne = BN_new();
BN_one(one);  // one = 1
BN_zero(negOne); // set negOne to zero
BN_sub(negOne, negOne, one) // subtract one from zero
BN_mul(inverse, bigprime, negOne, ctx); //multiply big prime by -1

更重要的是,我对 bignum 库还不够熟悉,不知道从零中“减”一是否真的会达到我想要的效果。蒂亚!

【问题讨论】:

  • 或许分享更多关于您正在使用的素数计算算法的信息。到目前为止,我看不出您提供的任何错误...
  • 为什么不简单地减去0 - bigprime(显然是BN_sub(inverse,zero,bigprime))?还是我错过了什么?
  • D'oh,我认为你是对的 Daniel——应该这样做。我知道我遗漏了一些明显的东西!
  • Daniel 如果您可以将其发布为答案而不是评论,我会将其标记为答案。再次感谢!

标签: c cryptography openssl bignum


【解决方案1】:

更简单的解决方案是从零中减去素数。

inverse = BN_new();
nil = BN_new();
BN_zero(nil);
BN_sub(inverse,nil,bigprime);

应该这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多