1
pls次のコードをチェックしてください..私はpとqを実装しようとしているRSAアルゴリズムを17と11と宣言しています...プログラムはセグメンテーションフォールトをそれはこのエラーを与えている理由の入力にプレーンテキストMをユーザに促す後のエラーが...この平均を行い、どのような?? ...任意の助けいただければ幸いです。.. :)私のRSAアルゴリズムプログラムのセグメンテーションフォールト
#include<iostream>
#include<math.h>
using namespace std;
class RSA
{
public:
long M,phi,d,e,n,c;
int p,q;
RSA();
void calculate();
long relprime();
long gcd(long,long);
void encrypt();
void decrypt();
};
RSA::RSA()
{
cout<<"enter the plain text M";
cin>>M;
p=17;
q=11;
}
void RSA::calculate()
{
n=p*q;
phi=(q-1)*(p-1);
e=(long)relprime();
cout<<e;
d=0;
while(d==0)
{
for(int k=1;;k++)
{
if((phi*k+1)%e==0)
d=(phi*k+1)/e;
}
}
cout<<d;
}
long RSA::relprime()
{
for(int i=2;i<phi;i++)
{
if(gcd(i,phi)==1)
return (long)i;
}
}
long RSA::gcd(long a,long b)
{
if(a<b)
{
if(a%b==0)
return a;
else gcd(b-a,a);
}
else gcd(b,a);
}
void RSA::encrypt()
{
c=(long)pow(M,e);
c=c%n;
cout<<"encrypted c="<<c;
}
void RSA::decrypt()
{
M=(long)pow(c,d);
M=M%n;
cout<<"plain text="<<M;
}
int main()
{
RSA r;
r.calculate();
r.encrypt();
r.decrypt();
return 0;
}
「ワンセグ障害は、」あなたは、あなたが所有していないメモリにアクセスしていることを意味します。デバッガでプログラムを実行して、問題の原因となっている行を見つけてそこから実行する必要があります。 –
コンストラクタ内のcin >> Mが問題を引き起こすことを発見しました。Mは何らかの値として宣言されましたが、同じseg-faultエラーです。私は自分が所有していないメモリにアクセスしています。 –