关于websocket的server应答 echo -n XXX|sha1sum|base64

duandi 发布于 2012/03/24 01:43
阅读 821
收藏 0
以下来自:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17#page-6

   Concretely, if as in the example above, |Sec-WebSocket-Key| header
   field had the value "dGhlIHNhbXBsZSBub25jZQ==", the server would
   concatenate the string "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" to form
   the string "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-
   C5AB0DC85B11".  The server would then take the SHA-1 hash of this,
   giving the value 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6
   0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea.  This value is
   then base64-encoded (see Section 4 of [RFC4648]), to give the value
   "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=".  This value would then be echoed in
   the |Sec-WebSocket-Accept| header field.

其实问题相当简单了 我怀疑我是哪里搞糊涂了
上面说 dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
这一串用sha-1加密 然后再用base64加密得到
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
可是我用echo -n XXX|sha1sum|base64怎么也得不到相同的答案

另外 如果能分享一下关于websocket的源码 最好是C或java的 将感激不尽……

以下是问题补充:

@duandi:<?php echo sha1 ( "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true ); echo base64_encode ( sha1 ( "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true ) ); ?> 用php得到正确答案 是我命令行用错了?到底哪里的问题…… (2012/03/24 15:17)
加载中
0
duandi
duandi
大致明白了 bash里的base64没有把sha1sum的输出当成16进制 php却可以 看了维基百科才明白 这么多天了 真不应该啊
返回顶部
顶部