| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | using System.Collections;using System.IO;using ET;using UnityEngine;using UnityEngine.Networking;namespace VEngine{    public class EncryptHelper    {        public static string resKey;        private static char[] _resKeyChars;        public static char[] resKeyChars        {            get            {                if(_resKeyChars == null && !string.IsNullOrEmpty(resKey))                {                    _resKeyChars = resKey.ToCharArray();                }                return _resKeyChars;            }        }        /// <summary>        /// 创建加密过的数据        /// </summary>        public static byte[] CreateEncryptData(string filePath, string secretKey)        {            byte[] encryptData;            char[] key = secretKey.ToCharArray();            using (FileStream fs = new FileStream(filePath, FileMode.Open))            {                encryptData = new byte[fs.Length];                fs.Read(encryptData, 0, encryptData.Length);                for (int i = 0; i < key.Length; i++)                {                    encryptData[i] = (byte)(encryptData[i] ^ key[i % key.Length]);                }            }            return encryptData;        }        /// <summary>        /// 获取解密的数据(无密钥的情况下直接获取数据)        /// </summary>        internal static byte[] GetDecryptData(string filePath, char[] secretKey = null)        {            //Logger.I($"GetDecryptData filePath : {filePath} secretKey : {secretKey}");            byte[] encryptData;            if (filePath.IndexOf("storage/emulated") > 0)            {                encryptData = File.ReadAllBytes(filePath);                if (secretKey != null)                {                    for (int i = 0; i < secretKey.Length; i++)                    {                        encryptData[i] = (byte)(encryptData[i] ^ secretKey[i % secretKey.Length]);                    }                }            }            else            {                using (UnityWebRequest webRequest = UnityWebRequest.Get(filePath))                {                    webRequest.SendWebRequest();                    while (!webRequest.isDone) { }#if UNITY_2020_1_OR_NEWER                    //Logger.I($"GetDecryptData filePath : 1 webRequest.isDone : {webRequest.isDone} webRequest.result : {webRequest.result}");                    if (webRequest.result == UnityWebRequest.Result.Success)#else                    Logger.I($"GetDecryptData filePath : 2");                if (string.IsNullOrEmpty(webRequest.error))#endif                    {                        //Logger.I($"GetDecryptData filePath : 3");                        encryptData = webRequest.downloadHandler.data;                        if (secretKey != null)                        {                            for (int i = 0; i < secretKey.Length; i++)                            {                                encryptData[i] = (byte)(encryptData[i] ^ secretKey[i % secretKey.Length]);                            }                        }                    }                    else                    {                        //Logger.I($"GetDecryptData filePath : 4");                        encryptData = null;                    }                }            }            return encryptData;        }    }}
 |