public static byte[] decrypt(byte[] data, byte[] key)
        {
            if (key == null || data == null || key.Length != 32)
            {
                throw new Exception("Invalid arguments!");
            }
            CryptoEngineAES cryptoEngineAES = new CryptoEngineAES(CryptoEngineAES.KeySize.Bits256, key);

            byte[] array  = new byte[data.Length];
            byte[] array2 = new byte[16];
            byte[] array3 = new byte[16];
            for (int i = 0; i < data.Length; i += 16)
            {
                Array.Copy(data, i, array2, 0, 16);
                cryptoEngineAES.InvCipher(array2, array3);
                Array.Copy(array3, 0, array, i, 16);
            }
            return(array);
        }
        public static byte[] decrypt(byte[] data, byte[] key)
        {
            if (key == null || data == null || key.Length != 32)
            {
                throw new Exception("Invalid arguments!");
            }
            CryptoEngineAES _aesFunct = new CryptoEngineAES(CryptoEngineAES.KeySize.Bits256, key);

            byte[] destinationArray = new byte[data.Length];
            byte[] buffer2          = new byte[16];
            byte[] output           = new byte[16];
            for (int i = 0; i < data.Length; i += 16)
            {
                Array.Copy(data, i, buffer2, 0, 16);
                _aesFunct.InvCipher(buffer2, output);
                Array.Copy(output, 0, destinationArray, i, 16);
            }
            return(destinationArray);
        }
        public static byte[] encrypt(byte[] data, byte[] key)
        {
            if (key == null || data == null || key.Length != 32)
            {
                throw new Exception("Invalid arguments!");
            }
            int num = ((data.Length - 1) / 16 + 1) * 16;

            byte[]          array           = new byte[num];
            CryptoEngineAES cryptoEngineAES = new CryptoEngineAES(CryptoEngineAES.KeySize.Bits256, key);
            int             arg_38_0        = data.Length;

            byte[] array2 = new byte[16];
            byte[] array3 = new byte[16];
            byte[] array4 = new byte[num];
            Array.Copy(data, array4, data.Length);
            for (int i = 0; i < array4.Length; i += 16)
            {
                Array.Copy(array4, i, array2, 0, 16);
                cryptoEngineAES.Cipher(array2, array3);
                Array.Copy(array3, 0, array, i, 16);
            }
            return(array);
        }