XOR加密问题…总初学者

XOR Encryption issues... Total Beginner

本文关键字:初学者 问题 加密 XOR      更新时间:2023-10-16

作为一个完全的初学者,我一直在尝试用c++编写一些异或加密代码

我遇到的问题是,当解密时,只有一半的消息实际上是正确翻译的

如果有人能告诉我出了什么问题,以及如何解决这个问题,我将非常感激

我还附加了控制台显示错误的内容酷儿ß®o»¥╝©®50¤┌Ð╬┘ð╝非加密[_í®-¾®科技部按任意键继续…

我的代码如下;

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    char string[] = "non-encrypted_message";
    char key[] = "A";
    for (int i = 0; i < sizeof(string); i++)
    {
        string[i] = string[i] ^ key[i];     //Performing the encryption with XOR operator
        cout << string[i];                  //Output of encrypted message
    }
    cout << "n";
    for (int j = 0; j < sizeof(string); j++)
    {
        string[j] = string[j] ^ key[j];
        cout << string[j];
    }
    cout << "n";
    return 0;
}

key的大小仅为2(包括终止字符),但您在循环中对其进行索引,导致其出界。要么让它成为一个单独的char,不索引它,要么确保数组足够大。我建议使用std::stringstd::arraystd::vector,好的调试器将为您进行边界检查。

声明key为char,不使用index

char key = 'A';
...
string[i] = string[i] ^ key;