Я новичок в программировании, и иногда даже то, что я пишу, остается для меня загадкой.Я впервые обращаюсь за помощью в интернете.
У меня есть проблема, и я не могу решить ее в течение некоторого времени.
Вот что я хочу сделать:
Чтение байта из файла в вектор, изменение байтов и запись их обратно.
Вот что происходит:
Кажется, что все средства шифрования работают, но почему-то после нескольких из этих операций часть файла пропадает.
Inв процессе изменения байтов я использую переполнения символов, это означает, что я добавляю случайное число к каждой части моего вектора и записываю его обратно целиком.
По моему мнению, это может быть какой-то проблемой арифметического переполненияне знаю о.
Кстати, я использую Qt SDK и среду Windows, на случай, если это поможет.
Вот фрагмент кода:
void crypt(string * password,string filename, int sign){
vector<char> stack;
ifstream is;
is.open(filename.c_str());
char c;
for (int i = 0; !is.eof(); i++){
is >> noskipws >> c;
stack.push_back(c);
}
stack.pop_back();
is.close();
int code = 0;
double x;
char method = 0;
int var;
for (int i = 0; i < password->size(); i++)
code += password->at(i);
for (int i = 0; i < (stack.size()); i++){
// some unrelated stuff skipped
if (sign == 1)code += stack[i];
stack[i] += var*method*sign; //<----this might be the cause!
if (sign == -1)code += stack[i];
method = 0;
}
ofstream os;
os.open(filename.c_str());
for (int i = 0; i < stack.size(); i++){
os << noskipws << stack[i];
}
os.flush();
os.close();
}
Извините за беспорядок в кодеЯ вроде написал это для тестирования.
Любые идеи будут оценены.