1

我尝试搜索但没有找到任何答案。我正在用 c++ 制作一个 websocket 服务器,但我无法让接受密钥工作。

这是我的代码:

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));

我正在使用 openssl/sha.h

4

1 回答 1

0

你在最后连接“=”吗?

相等的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) . "=";
于 2013-02-27T06:27:29.960 回答