暗号化と復号化のために、c++ でコードを作成しました。最初のコードは vector で出力を作成し、fwrite を使用してファイルに書き込みます。2 番目のコードは、fread を使用して最初のコードからその出力を読み取ります。ここに私のコードのスニペットがあります:
1番目のコード:
.....
string a;
vector<long long int> c;
cout << "message to be encrypted = ";
cin >> a;
cout << endl;
cout << "Encrypted message : ";
for (i=0;i<a.size();i++)
{
x=(int)a.at(i);
cout << x << " ";
c.push_back(powerMod(x,e,n));
}
for (i=0;i<c.size();i++)
{
//cout << char(c.at(i));
}
cout << endl;
//Write ciphertext c to a file
FILE * pWrite;
pWrite = fopen ("ciphertext", "w");
fwrite (&c , sizeof(c), 1, pWrite);
fclose (pWrite);
出力は次のとおりです。
message to be encrypted = test
Encrypted message : 116 101 115 116
そして、2番目のコード:
....
//Read Ciphertext from ciphertext
FILE * pRead2;
pRead2 = fopen ("ciphertext", "r");
fread (&c , sizeof(c), 1, pRead2);
//cout << "ciphertext is " << c << endl;
// Decryption
cout << "Decrypted message : ";
for (i=0;i<c.size();i++)
{
cout << powerMod(c.at(i),d,n) << " " ;
}
cout << endl;
しかし、それは戻ります:
Segmentation Fault(Core Dumped)
fwrite または fread のどこに問題があるのか わからないので、助けていただければ幸いです。しかし、問題は暗号文 (ベクトル) を読み取ろうとする 2 番目にあると思います。その行を消去すると、プログラムは完全に実行されますが、メッセージは復号化されません。
ありがとう。