我需要计算 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 库不够熟悉,不知道从零“减”一是否真的能达到我想要的效果。 TIA!
最佳答案
更简单的解决方案是从零减去素数。
inverse = BN_new();
nil = BN_new();
BN_zero(nil);
BN_sub(inverse,nil,bigprime);
应该这样做。
关于c - 使用 OpenSSL BIGNUM 求加法逆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546210/