Я следил за учебником на веб-сайте stephan-brumme для шифрования XOR (к сожалению, я не могу включить URL, потому что у меня недостаточно репутации). Я хочу сделать следующее: прочитать содержимое файла example.txt и расшифровать текст, который он включает. Например, это содержание example.txt:C++ XOR шифрование - проблема с расшифровкой
\xe7\xfb\xe0\xe0\xe7
Это, когда расшифрованы с помощью пароля «пароль» должен вернуть «привет». Это код, который я получил:
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
std::string decode(const std::string& input)
{
const size_t passwordLength = 9;
static const char password[passwordLength] = "password";
std::string result = input;
for (size_t i = 0; i < input.length(); i++)
result[i] ^= ~password[i % passwordLength];
return result;
}
int main(int argc, char* argv[])
{
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while (getline (myfile,line))
{
cout << decode(line);
}
myfile.close();
}
return 0;
}
И это результат работы приложения: click for image
Как вы можете видеть, дешифровка не удалась. Теперь, если я делаю это так, то не читает .txt, а непосредственно расшифровывает текст, например:
cout << decode("\xe7\xfb\xe0\xe0\xe7");
Он отлично работает: click for image
Что я здесь делаю неправильно?
Большое спасибо заранее! :)
наиболее вероятный источник является содержанием example.txt. Помните, что вывод XOR находится в двоичном формате, что означает, что example.txt должен быть UTF-8. Для согласованности всегда используйте ключ и ввод того же типа [Ex: char или widechar (utf-8)] – Nandu
example.txt - UTF-8. Спасибо, что пытались помочь! – MrWhite
может включать изображение, отображающее содержимое файла? – Nandu