public static void DecryptFile(string inputFile, string outputFile, string keyIV)
        {
            byte[] array  = new byte[32];
            byte[] array2 = new byte[16];
            AssetStoreUtils.HexStringToByteArray(keyIV, array, 0);
            AssetStoreUtils.HexStringToByteArray(keyIV, array2, 64);
            FileStream fileStream  = File.Open(inputFile, FileMode.Open);
            FileStream fileStream2 = File.Open(outputFile, FileMode.CreateNew);
            AesManaged aesManaged  = new AesManaged();

            aesManaged.Key = array;
            aesManaged.IV  = array2;
            CryptoStream cryptoStream = new CryptoStream(fileStream, aesManaged.CreateDecryptor(aesManaged.Key, aesManaged.IV), CryptoStreamMode.Read);

            try
            {
                byte[] array3 = new byte[40960];
                int    count;
                while ((count = cryptoStream.Read(array3, 0, array3.Length)) > 0)
                {
                    fileStream2.Write(array3, 0, count);
                }
            }
            finally
            {
                cryptoStream.Close();
                fileStream.Close();
                fileStream2.Close();
            }
        }
        public static void DecryptFile(string inputFile, string outputFile, string keyIV)
        {
            byte[] array  = new byte[32];
            byte[] array2 = new byte[16];
            AssetStoreUtils.HexStringToByteArray(keyIV, array, 0);
            AssetStoreUtils.HexStringToByteArray(keyIV, array2, 64);
            EditorUtility.DisplayProgressBar("Decrypting", "Decrypting package", 0f);
            FileStream fileStream  = File.Open(inputFile, FileMode.Open);
            FileStream fileStream2 = File.Open(outputFile, FileMode.CreateNew);
            long       length      = fileStream.Length;
            long       num         = 0L;
            AesManaged aesManaged  = new AesManaged();

            aesManaged.Key = array;
            aesManaged.IV  = array2;
            CryptoStream cryptoStream = new CryptoStream(fileStream, aesManaged.CreateDecryptor(aesManaged.Key, aesManaged.IV), CryptoStreamMode.Read);

            try
            {
                byte[] array3 = new byte[40960];
                int    num2;
                while ((num2 = cryptoStream.Read(array3, 0, array3.Length)) > 0)
                {
                    fileStream2.Write(array3, 0, num2);
                    num += (long)num2;
                    if (EditorUtility.DisplayCancelableProgressBar("Decrypting", "Decrypting package", (float)num / (float)length))
                    {
                        throw new Exception("User cancelled decryption");
                    }
                }
            }
            finally
            {
                cryptoStream.Close();
                fileStream.Close();
                fileStream2.Close();
                EditorUtility.ClearProgressBar();
            }
        }