public void GetHeader(out NetHeader header) { header.code = buffer[0]; header.length = (ushort)(buffer[1] + (buffer[2] << 8)); header.randKey = buffer[3]; header.checkSum = buffer[4]; }
public bool Decryption(NetHeader header) { if (header.code != Protocol.PACKET_CODE) { MessageBox.Show("복호화 에러: 패킷 코드 에러"); return(false); } int offset = Protocol.SizeOfNetHeader; int packetSize = UseSize; byte randKey = header.randKey; byte temp1; byte temp2; temp1 = (byte)(header.checkSum ^ (FIXED_KEY + 1)); temp2 = temp1; byte decodeCheckSum = (byte)(temp1 ^ (byte)(randKey + 1)); byte checkSum = 0; byte predata; temp1 = (byte)(buffer[offset] ^ (byte)(FIXED_KEY + 2 + header.checkSum)); predata = buffer[offset]; buffer[offset] = (byte)(temp1 ^ (byte)(temp2 + randKey + 2)); temp2 = temp1; checkSum += buffer[offset]; for (int i = 1; i < packetSize; i++) { temp1 = (byte)(buffer[offset + i] ^ (byte)(FIXED_KEY + (i + 2) + predata)); predata = buffer[offset + i]; buffer[offset + i] = (byte)(temp1 ^ (byte)(temp2 + randKey + (i + 2))); temp2 = temp1; checkSum += buffer[offset + i]; } if (checkSum != decodeCheckSum) { MessageBox.Show("복호화 에러: 체크섬 에러 / checkSum :" + checkSum + "/ decode : " + decodeCheckSum); return(false); } return(true); }