C++ xor между 2 строками Null CBC

Я пытаюсь реализовать схему CBC для AES, используя Crypto++. Отсюда и мои проблемы: когда я пытаюсь "xor" 2 строки символов, у меня возникают проблемы в том случае, когда я пытаюсь xor персонажа с собой.

unsigned char * xorOp(const char * s1,unsigned char * s2){    
     unsigned char *out = (unsigned char *) calloc(strlen(s1),sizeof(unsigned char));
     for(int i=0; s1[i]!=0;i++)
     {
          out[i] = s1[i] ^ s2[i];
          cout<<out[i]<<endl;
          if(out[i] == '\0') cout<<"not ok "<<s1[i]<<" "<<s2[i]<<endl;
     }

     return out;
}

Вызов:

unsigned char * encryptedXOR = xorOp(plainTextBlock.c_str(),iv);

где plainTextBlock - это блок из 16 байтов обычного текста, а iv - вектор инициализации (16 байтов). После этого, предположив, что моя длина обычного текста равна 130, после заполнения 144, после шифрования должно быть 288. Так что это измерение не может быть достигнуто из-за xor. Пожалуйста помоги! Спасибо!

0 ответов

Другие вопросы по тегам