Я пишу сервер websocket на C ++ и у меня проблема с вычислением ключа Sec-WebSocket-Accept.Я протестировал sha1, и он генерирует правильное значение (я взял строку из примера из Википедии и получил тот же хэш), а также нашел онлайн-конвертер base64 для тестирования второй части, и, похоже, он работает правильно.Но, как я вижу по другим вопросам, моя строка слишком длинная.
std::string secKey = readHeader(buffer,n,"Sec-WebSocket-Key");
std::string magic = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
secKey.append(magic);
unsigned char hash[20];
char hexstring[41];
sha1::calc(secKey.c_str(),secKey.length(),hash);
sha1::toHexString(hash,hexstring);
std::string encoded = base64_encode(reinterpret_cast<const unsigned char*>(hexstring) ,strlen(hexstring));
For secKey = "4aRdFZG5uYrEUw8dsNLW6g ==" Я получаю закодированное значение "YTYwZWRlMjQ4NWFhNzJiYmRjZTQ5ODM1NNJWEWNWJWNWWWJWNJWJWNWJWNWJWNJWNWJWNW0WMNNjjwjw