示例#1
0
        /// <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());
        }
示例#2
0
        /// <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());
        }