Добрый день
Суть вопроса такова что у меня есть строка русских смиволов в формате UTF8
мне необходимо зашифровать ее методом XOR и далее перегнать в base64
в принципи все понятно и как шифровать и даже функция перегона в base 64 есть
std::string CRequest::EncodeMessage(std::wstring& wStr,std::string key)
{
std::string cipher;
int i,k;
for(i=0;i<wStr.length();i++)
{ k=(i) % key.length();
cipher.push_back(char((unsigned int)cipher.at(k)^(unsigned int)key.at(k)));
}
cipher=base64_encoded(cipher);
return cipher;
}
проблема в следующем
когда встречается символ в один байт, то по сути у нас есть старший байт нулевой и младший совпадает с кодом аски.
если больше одного байта (русские символы) то мне необходимо разбивать их , это я вроде разобрался как делать
__int16 a=(__int16)wStr.at(i) ;
BYTE ff=((char*)(&a))[0];
BYTE ff1=((char*)(&a))[1];
непонятн как потом при дешифрации собрать 2 байта которые кодируют один символ