逆模量的GMP分离错误



我正在尝试用C++编写一个简单的程序来演示RSA背后的数学。我正在使用GMP库(https://gmplib.org/),以便以后可以使用更大的素数将其扩展。

当我尝试计算 D(解密指数)作为 e mod phi(n) 的模逆时,它出现了段错误,我不知道为什么。

谁能阐明这个问题?

#include <gmp.h>    // For the GMP library 
int main()
{
mpz_t n,p,q,e,c,d,h;
mpz_init(n);        
mpz_init(h);
mpz_init_set_str(e, "65537", 10);
mpz_init_set_str(p, "1298849", 10);
mpz_init_set_str(q, "1298863", 10);
mpz_mul(n,p,q);
mpz_sub_ui(p, p, 1UL);
mpz_sub_ui(q, q, 1UL);
mpz_mul(h, p, q);
gmp_printf ("%Zdn", h);
//This next line segfaults it.
mpz_invert(d,e,h);
return 0; 
}

任何帮助都值得赞赏,我很困惑!

编译: g++ -std=c++11 Example.cpp -lgmp -lgmpxx -o Example

您从未初始化过cd,因此不能使用它们进行计算。

最新更新