Добрый вечер!
По заданию книги, написал алгоритм для шифровки и расшифровки текста по ключу таким способом, что для символа s применяется xor: s ^ key[i], где key - ключ алгоритма. каждый раз, когда указатель key указывает на конец массива - отсчет у него начинается по новой
int main(){
const char* str = "va ahava ma agava";
char* crypted = (char*)malloc(strlen(str)+1);
const char* key = "i am a key. very hard key";
//pointers
char* pcrypted = crypted;
const char* const pkey = key;
const char* const pstr = str;
//pointers
cout << "Original text: " << str << "\nCrypted text:\n";
while(*str){
char k = *key++;
char cr;
if(*str == k) //Если *key == *str, то *key ^ *str
cr = *str++ ^ k+1; //будет равно 0
else //этого нельзя допустить
cr = *str++ ^ k;
*crypted++ = cr;
cout << char(cr);
if(!*key) key = pkey;
}
cout << "\nUncrypted text:\n";
key = pkey;
crypted = pcrypted;
while (*crypted) {
if((*crypted ^ *key) == (*key)+1) //Убрать предохранитель от '\0'
cout << char((*crypted++ ^ *key++)-1);
else
cout << char(*crypted++ ^ *key++);
if(!*key) key = pkey;
}
cout << '\n';
}
После этого задания появилось новое - расшифровать закодированный текст, при этом не имея ключа. Подскажите пожалуйста какие нибудь идеи