示例#1
0
        private byte[] CheckPack(byte[] data)
        {
            if (data.Length < 4 || !BitConverter.ToInt32(data, 0).Equals(flagHeader))
            {
                return(null);
            }
            byte[] countArr = new byte[8];
            byte[] md5Arr   = new byte[32];

            for (int i = 4; i < 12; i++)
            {
                countArr[i - 4] = data[i];
                data[i]         = 0;
            }

            for (int i = 36; i < 68; i++)
            {
                md5Arr[i - 36] = data[i];
                data[i]        = 0;
            }

            byte[] finalData = new byte[BitConverter.ToInt32(countArr, 0)];

            Array.Copy(data, finalData, finalData.Length);

            string md5Check = MD5Code.GetMD5HashFromByte(data);
            string md5Req   = Encoding.UTF8.GetString(md5Arr);

            if (!string.Compare(md5Check, md5Req).Equals(0))
            {
                return(null);
            }

            return(finalData);
        }
示例#2
0
        private bool CheckRegisnFile()
        {
            if (!File.Exists(regisnTextPath))
            {
                return(false);
            }

            string[] code = File.ReadAllLines(regisnTextPath);

            if (code.Length < 3)
            {
                return(false);
            }
            string regisnCode = code[1];

            string md5 = MD5Code.GetMD5HashFromByte(Encoding.UTF8.GetBytes(mCode + regisnCode));

            if (!string.Compare(md5, code[2]).Equals(0))
            {
                return(false);
            }
            this.id         = code[0];
            this.regisnCode = regisnCode;
            return(true);
        }
示例#3
0
        private void SetRegisignFile2Local(string id)
        {
            if (File.Exists(regisnTextPath))
            {
                File.Delete(regisnTextPath);
            }
            string[] code = new string[3];
            code[0] = id;
            code[1] = this.regisnCode;
            code[2] = MD5Code.GetMD5HashFromByte(Encoding.UTF8.GetBytes(this.mCode + this.regisnCode));

            File.WriteAllLines(regisnTextPath, code);
        }
示例#4
0
        private void SetReqHeader(UdpRequestBase req)
        {
            if (!req.Id.Equals(0xffffffff))
            {
                return;
            }
            req.Id = Interlocked.Add(ref reqId, 1);
            req.SetIndex(0);
            req.WriteInt32(flagHeader);
            req.WriteInt64(req.Id);
            req.SetIndex(20);//跳过包长度
            req.WriteInt32(req.ClientId);
            req.WriteInt32(req.ProtocolId);
            req.TimeTick = System.DateTime.Now.Ticks;
            req.WriteInt64(req.TimeTick);
            string md5 = MD5Code.GetMD5HashFromByte(req.getMemData());

            byte[] checkData = Encoding.UTF8.GetBytes(md5);
            req.SetIndex(36);
            req.SetMd5Header(checkData);
            req.SetIndex(12);
            req.Count += 8;//加上自己
            req.WriteInt64(req.Count);
        }