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); }
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); }
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); }
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); }