【发布时间】:2016-06-28 22:09:39
【问题描述】:
我正在关注rfc6455:
具体来说,如上例所示,|Sec-WebSocket-Key|
标头字段的值为“dGhlIHNhbXBsZSBub25jZQ==”,服务器
将连接字符串“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”
形成字符串“dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-
C5AB0DC85B11"。然后,服务器将采用 SHA-1 哈希,
给出值 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6
0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea。这个值是
然后进行 base64 编码(参见 [RFC4648] 的第 4 节),给出值
“s3pPLMBiTxaQ9kYGzzhZRbK+xOo=”。然后这个值会在
中回显 |Sec-WebSocket-Accept|头域。
并且无法生成正确的“Sec-WebSocket-Accept”。
为了了解我在网上使用SHA1 hash和Base64 Encode的过程。
“dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11”的online SHA1 hash 给出正确的结果:“b37a4f2cc0624f1690f64606cf385945b2bec4ea”,如 rfc6455 中所述。
但是online Base64 Encode 给我错误的结果“YjM3YTRmMmNjMDYyNGYxNjkwZjY0NjA2Y2YzODU5NDViMmJlYzRlYQ==”对于输入“b37a4f2cc0624f1690f64606cf385945b2bec4ea”。 结果应该是“s3pPLMBiTxaQ9kYGzzhZRbK+xOo="
我做错了什么?
【问题讨论】: