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; } } /// /// 创建加密过的数据 /// 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; } /// /// 获取解密的数据(无密钥的情况下直接获取数据) /// 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; } } }