/// <summary> /// Encrypt the command message /// </summary> /// <param name="pMessage">Message</param> /// <param name="pProtocolType">Protocol type</param> /// <returns>Returns the encrypted bytes of the message</returns> internal static byte[] EncryptMessage(byte[] pMessage, HS100.ProtocolType pProtocolType) { List <byte> mBuffer = new List <byte>(); int key = 0xAB; if ((pMessage != null) && (pMessage.Length > 0)) { //Añadimos el prefijo del mensaje if (pProtocolType == HS100.ProtocolType.TCP) { mBuffer.Add(0x00); mBuffer.Add(0x00); mBuffer.Add(0x00); mBuffer.Add(0x00); } //Codificamos el mensaje for (int i = 0; i < pMessage.Length; i++) { byte b = (byte)(key ^ pMessage[i]); key = b; mBuffer.Add(b); } } return(mBuffer.ToArray()); }
/// <summary> /// Decrypt the message /// </summary> /// <param name="pMessage">Message</param> /// <param name="pProtocolType">Protocol type</param> /// <returns>Returns the decrypted message</returns> internal static byte[] DecryptMessage(byte[] pMessage, HS100.ProtocolType pProtocolType) { List <byte> mBuffer = new List <byte>(); int key = 0xAB; //Skip the first 4 bytes in TCP communications (4 bytes header) byte header = (pProtocolType == HS100.ProtocolType.UDP) ? (byte)0x00 : (byte)0x04; if ((pMessage != null) && (pMessage.Length > 0)) { for (int i = header; i < pMessage.Length; i++) { byte b = (byte)(key ^ pMessage[i]); key = pMessage[i]; mBuffer.Add(b); } } return(mBuffer.ToArray()); }