2012-03-14 14 views
0

私はhtml5ウェブソケットでハンドシェイクできるAS3ソケットサーバーを構築しようとしています。私は、これは私がリンクの例と同じ値を使用して持っているものであるhttp://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17AS3 Websocketハンドシェイク

このリンクを私のコードをベースにしました:

import com.dynamicflash.util.Base64; 
import com.adobe.crypto.SHA1;  

function getKey():void{ 
var key:String = "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; 
key = SHA1.hash(key); 
key = Base64.encode(key); 
trace(key); 
    //traces YjM3YTRmMmNjMDYyNGYxNjkwZjY0NjA2Y2YzODU5NDViMmJlYzRlYQ== instead of s3pPLMBiTxaQ9kYGzzhZRbK+xOo=" 

} 

今の例では、述べ出力があるべきこと:

具体的には、上記の例のように、| Sec-WebSocket-Key |ヘッダーフィールドの値が "dGhlIHNhbXBsZSBub25jZQ =="だった場合、サーバーは文字列 "dGhlIHNhbXBsZSBub25jZQ == 258EAFA5-E914-47DA-95CA-C5AB0DC85B11"を形成するために文字列 "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 ="

になりますか?

答えて

2

その私も、任意のActionScriptを読んでいますが、

key = SHA1.hashToBase64(key); 

key = SHA1.hash(key); 
key = Base64.encode(key); 

を置き換えるべきではありませんので、しばらく?現在のコードはsha1ハッシュ(バイト配列)を文字列に変換しますが、元のバイト配列をbase64エンコーダに渡す必要があります。

関連する問題