c - 使用 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, 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/

相关文章:

c++ - 超线程性能比较

linux - gcc .h 没有这样的文件或目录(openssl、anaconda、Ubuntu 18.04

c++ - 如何在满足条件时在eclipse中停止执行

c - 通用排序适用于整数但不适用于其他类型

c - C 赋值和参数传递会导致隐式转换,还是我们应该显式转换?

更新证书后,Ruby Net::HTTP 响应 OpenSSL::SSL::SSLError "certificate verify failed"

c - 使用具有多个条件的 while 循环

java - 使用 Java 访问 Poloniex HTTP API

algorithm - 包含电话号码的庞大数据集的散列和加密技术

java - BouncyCaSTLe 上的椭圆曲线与数字签名算法 (ECDSA) 实现