【发布时间】:2018-02-25 03:40:23
【问题描述】:
我正在尝试设置 websocket 通信。我可以打开 websocket,但我不知道如何让握手响应正确。根据几个网站:
“此外,服务器可以在这里决定扩展/子协议请求;有关详细信息,请参阅杂项。Sec-WebSocket-Accept 部分很有趣。服务器必须从客户端发送的 Sec-WebSocket-Key 派生它。得到它,将客户端的 Sec-WebSocket-Key 和“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”连接在一起(它是一个“魔术字符串”),获取结果的 SHA-1 哈希,并返回 base64 编码哈希...因此,如果密钥是“dGhlIHNhbXBsZSBub25jZQ==”,则接受将是“s3pPLMBiTxaQ9kYGzzhZRbK+xOo="。
https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers
但我似乎根本无法重现这些结果。我尝试了许多编码器/解码器,并试图找到上述指令的替代解释,但它们都不起作用。我也没有找到任何这样做的代码示例。
输入:dGhlIHNhbXBsZSBub25jZQ==
魔线(永不改变):258EAFA5-E914-47DA-95CA-C5AB0DC85B11
输出:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
我得到正确答案的唯一方法是通过this site。似乎 SHA1 编码错误,但整体 64 位答案是否正确?无论如何,我们将不胜感激。
【问题讨论】:
-
您可以随时look at what others did。它可以帮助你弄清楚逻辑。
标签: c++ encryption websocket