C 使用OpenSSL BIGNUM查找加法逆

C 使用OpenSSL BIGNUM查找加法逆,c,cryptography,openssl,bignum,C,Cryptography,Openssl,Bignum,我需要计算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

我需要计算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库还不够熟悉,不知道从零减去一是否真的能达到我想要的效果。蒂亚

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

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

应该这样做。

也许这有助于更多地分享您正在使用的素数计算算法。到目前为止,我看不出你提供的东西有什么缺点……为什么不简单地减去
0-bigprime
BN_sub(逆,零,bigprime)
)?还是我遗漏了什么?哦,我想你是对的,丹尼尔,应该这样。我知道我错过了一些明显的东西!丹尼尔如果你能把它作为一个答案而不是一个评论,我会把它标记为一个答案。再次感谢!