我正在尝试将部分加密的字符串保存到文件中。我已经被困了几个小时了,我不明白错误在哪里。这是功能:
void cryptData(string & rawTxt, string & path) {
// the rawTxt is OK. Path is too.
int c(0), counta(0);
while( rawTxt[c] != '\0') { // Reading every char from the string.
if(c <= 122) {
// First 123 char won't be crypted.
// Here I do nothing to rawTxt
}
else { // All remaining chars will be crypted
rawTxt[c] = cryptByte(counta, rawTxt[c]); // Replace current char at position c
// by a crypted char.
counta++;
if(counta > 36) // counta used for crypting,
counta = 0;
}
c++;
}
ofstream toDat(path.c_str() ); // Save recrypted .dat file
toDat << rawTxt.c_str(); // HERE the first 123 chars are not copied in my file...
}
// Crypt chars
char cryptByte(int counta, char b) {
string plainEncryptionKey("odBearBecauseHeIsVeryGoodSiuHungIsAGo");
b+= (char) plainEncryptionKey[counta];
return b;
}
我不明白为什么前 123 个字符没有保存在我的文件中。rawTxt 字符串从我的程序开始到结束的长度相同。请我快疯了!
编辑:对不起,我的字符串 rawTxt 是解密文件的结果,该文件的开头有 123 个随机字符。所以这些随机字符在解密算法中被清除了。我愚蠢地编写了加密算法,却没有将这 123 个字符放回应有的位置。当我意识到我的代码适用于另一个字符串时,我得到了提示。我的错。谢谢你的帮助!