Я пытаюсь реализовать схему 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.
Пожалуйста помоги!
Спасибо!
Задача ещё не решена.
Других решений пока нет …