关于逆模量的GMP Segfault

时间:2015-04-21 02:52:48

标签: c++11 rsa 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 ("%Zd\n", h);

//This next line segfaults it.
mpz_invert(d,e,h);

return 0; 
}

感谢任何帮助,我很难过!

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

1 个答案:

答案 0 :(得分:1)

您从未初始化cd,因此您无法将其用于计算。