该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最近在学socket 流程已经基本明白 就是加密这块不太理解。看到好多的聊天室都有这么一段加密的
function ord_hex($data)
{
$msg = "";
$l = strlen($data);
for ($i= 0; $i< $l; $i++) {
$msg .= dechex(ord($data{$i}));
}
return $msg;
}
function wrap($msg="") {
$frame = array();
$frame[0] = "81";
$msg .= " is ok!";
$len = strlen($msg);
$frame[1] = $len<16?"0".dechex($len):dechex($len);
$frame[2] = ord_hex($msg);
$data = implode("",$frame);
return pack("H*", $data);
}
function unwrap($msg="") {
$mask = array();
$data = "";
$msg = unpack("H*",$msg);
//var_dump($msg);
$head = substr($msg[1],0,2);
//var_dump($head{1});
if (hexdec($head{1}) === 8) {
$data = false;
} else if (hexdec($head{1}) === 1) {
$mask[] = hexdec(substr($msg[1],4,2));
$mask[] = hexdec(substr($msg[1],6,2));
$mask[] = hexdec(substr($msg[1],8,2));
$mask[] = hexdec(substr($msg[1],10,2));
$s = 12;
$e = strlen($msg[1])-2;
$n = 0;
for ($i= $s; $i<= $e; $i+= 2) {
$data .= chr($mask[$n%4]^hexdec(substr($msg[1],$i,2)));
$n++;
}
}
return $data;
}
有没有高手给解释一下。目的是什么? 是因为h5的websocket发送到phpserver端的字符类型问题? 我试过 如果不加密和解密 英文字母和数字也会报错 断开连接。 不太明白这一块