【发布时间】:2023-04-15 12:44:01
【问题描述】:
我使用这段代码来创建一个 Padding RSA 函数。不幸的是在替换时
mpz_get_str(str, base, N.get_mpz_t());
cout<<"\n\nLength of k = Modulus in bytes: "<<strlen(str);
str 和 str1 我收到分段转储。为什么会这样?
int main(const int argc, const char *const argv[])
{
// Check number of arguments
if (argc!=4){
printf("usage: %s [Message] [Exponent] [Modulus] \n", argv[0]);
return 1;
}
char *str;
char *str1="";
int base=10,l;
mpz_t op;
// Receive arguments
const mpz_class m(argv[1]), d(argv[2]),N(argv[3]),message(argv[1]);
mpz_get_str(str1, base, N.get_mpz_t());
cout<<"\n\nLength of k = Modulus in bytes: "<<strlen(str1);
// Calculate RSA
cout<<endl<<RSA(m,d,N);
//TestArea
cout<<"\n\n"<<m;
mpz_get_str(str, base, m.get_mpz_t());
cout<<"\n\nLength of string message in bytes: "<<strlen(str);
cout<<"\n\n"<<str;
return 0;
}
【问题讨论】: