このように機能するXORベースのen/decryptorを作成しています。たとえば3の平文文字と、たとえば5のユーザーキーがあります。ビット単位で記述:
3 = 00000011
5 = 00000101
XOR演算を実行すると、6が得られます。
6 = 00000110
これは、6 XOR 5、つまり3と言うことで元に戻すことができます。
だから私はこのプログラムを作りました。しかし、それは本当にバグがあり、テキストを正しく翻訳せず、使用しているキーに応じて、ファイルの最後に多くの文字を追加します。
using namespace std;
int main(int argc, char *argv[])
{
char buffer[5001];
ifstream fin("a.txt", ifstream::in);
ofstream fout("b.txt");
int key;
char znak;
// console
cout << "Key: ";
cin >> key;
fin.get(znak);
while(!fin.eof() && znak != ' ')
{
fin.get(buffer, sizeof(buffer));
}
for(int i = 0; i < sizeof(buffer); i++)
{
fout << function(key, buffer[i]);
}
cout << "done" << endl;
cin.get();
return 0;
}
char function(int key,char input)
{
return input ^ key;
}
プログラムがテキストを正しく翻訳しないのはなぜですか?そして、なぜそれはファイルの終わりに文字を追加するのですか?