C++ C++;WebSocket服务器实现(接受密钥不匹配)
我试着搜索,但没有找到任何答案。 我正在用C++编写WebSoSk服务器,但不能让接受密钥工作。< /P> 这是我的密码:C++ C++;WebSocket服务器实现(接受密钥不匹配),c++,websocket,C++,Websocket,我试着搜索,但没有找到任何答案。 我正在用C++编写WebSoSk服务器,但不能让接受密钥工作。< /P> 这是我的密码: std::string magicKey = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; key.append(magicKey); unsigned char* sha_str = SHA1(reinterpret_cast<const unsigned char*>(key.c_str()), key.length(
std::string magicKey = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
key.append(magicKey);
unsigned char* sha_str = SHA1(reinterpret_cast<const unsigned char*>(key.c_str()), key.length(), nullptr);
std::string final = base64_encode(reinterpret_cast<const unsigned char*>(sha_str), strlen((char*)sha_str));
std::string magicKey=“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”;
附加键(magicKey);
unsigned char*sha_str=SHA1(reinterpret_cast(key.c_str())、key.length()、nullptr);
std::string final=base64_编码(reinterpret_cast(sha_str),strlen((char*)sha_str));
我使用的是openssl/sha.h是否在末尾连接“=”
equalant perl代码用于验证您是否需要
use Digest::SHA qw(sha1_base64);
my $clientKey="xyz";
my $specifcationGUID = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
my $fullWebSocketKey = "$clientKey$specifcationGUID";
# dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
#print "Fill socket key is $fullWebSocketKey\n";
# 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf
# 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea
print sha1_base64($fullWebSocketKey) . "=";
但是在sha1和base64之后,它已经在末尾得到了“=”。它需要得到其中的两个??尝试将代码中的最后一个字符串与perl字符串进行比较,它们应该是相同的,因此请检查sha1字符串的长度是否应该是20。strlen(str)可能也是一个问题。所以sha_str应该有20个长度?如果strlen((char*)sha_str)没有返回20,那么它就错了吗?所以,我用了键末尾的“/n”,所以我删除了它并开始工作。