2012-03-14 5 views
0

Я пытаюсь создать сервер сокетов AS3, который может рукопожарить с веб-сайтами html5. Я основываю свой код по этой ссылке http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17AS3 Websocket Handshake

Это то, что я быть_наст, используя то же значение, как, например, в ссылке:

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 ==», сервер будет конкатенировать строку «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 (см. Раздел 4 в [RFC4648]), чтобы получить значение «s3pPLMBiTxaQ9kYGzzhZRbK + xOo =»

Я что-то не хватает?

ответ

2

Его некоторое время, так как я даже читать любой ActionScript, но не должны заменить

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

с

key = SHA1.hashToBase64(key); 

? Текущий код преобразует хэш sha1 (массив байтов) в строку, но его исходный массив байтов вам нужно передать в кодировщик base64.

Смежные вопросы