@sddvxd

Как написать алгоритм для расшифровки текста?

Добрый вечер!
По заданию книги, написал алгоритм для шифровки и расшифровки текста по ключу таким способом, что для символа 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';
}


После этого задания появилось новое - расшифровать закодированный текст, при этом не имея ключа. Подскажите пожалуйста какие нибудь идеи
  • Вопрос задан
  • 373 просмотра
Решения вопроса 1
myjcom
@myjcom Куратор тега C++
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы