diff --git a/Assets/YooAsset/Samples~/Test Sample/Editor/TestPackageBuilder.cs b/Assets/YooAsset/Samples~/Test Sample/Editor/TestPackageBuilder.cs index bd21c595..188ef4c6 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Editor/TestPackageBuilder.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Editor/TestPackageBuilder.cs @@ -71,7 +71,7 @@ public static class TestPackageBuilder buildParameters.ClearBuildCacheFiles = true; buildParameters.UseAssetDependencyDB = true; buildParameters.BuiltinShadersBundleName = builtinShaderBundleName; - buildParameters.EncryptionServices = new FileStreamTestEncryption(); + buildParameters.EncryptionServices = new TestFileStreamEncryption(); var pipeline = new ScriptableBuildPipeline(); BuildResult buildResult = pipeline.Run(buildParameters, false); @@ -108,7 +108,7 @@ public static class TestPackageBuilder buildParameters.CompressOption = ECompressOption.LZ4; buildParameters.ClearBuildCacheFiles = true; buildParameters.UseAssetDependencyDB = true; - buildParameters.EncryptionServices = new FileStreamTestEncryption(); + buildParameters.EncryptionServices = new TestFileStreamEncryption(); var pipeline = new BuiltinBuildPipeline(); BuildResult buildResult = pipeline.Run(buildParameters, false); diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/T2_TestBuldinFileSystem.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/T2_TestBuldinFileSystem.cs index a4b28585..68f61fdc 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/T2_TestBuldinFileSystem.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/T2_TestBuldinFileSystem.cs @@ -60,7 +60,7 @@ public class T2_TestBuldinFileSystem : IPrebuildSetup, IPostBuildCleanup // 初始化资源包 var initParams = new OfflinePlayModeParameters(); - var decryption = new FileStreamTestDecryption(); + var decryption = new TestFileStreamDecryption(); initParams.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryption, packageRoot); initParams.BuildinFileSystemParameters.AddParameter(FileSystemParametersDefine.DISABLE_CATALOG_FILE, true); var initializeOp = package.InitializeAsync(initParams); diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestBundleEncryption.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestBundleEncryption.cs index 760cb6bf..bb297e5c 100644 --- a/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestBundleEncryption.cs +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestBundleEncryption.cs @@ -34,7 +34,7 @@ public class TestBundleEncryption /// /// 文件流加密方式 /// -public class FileStreamTestEncryption : IEncryptionServices +public class TestFileStreamEncryption : IEncryptionServices { public EncryptResult Encrypt(EncryptFileInfo fileInfo) { @@ -64,7 +64,7 @@ public class FileStreamTestEncryption : IEncryptionServices /// /// 文件偏移加密方式 /// -public class FileOffsetTestEncryption : IEncryptionServices +public class TestFileOffsetEncryption : IEncryptionServices { public EncryptResult Encrypt(EncryptFileInfo fileInfo) { @@ -119,7 +119,7 @@ public class BundleStream : FileStream /// /// 资源文件流解密类 /// -public class FileStreamTestDecryption : IDecryptionServices +public class TestFileStreamDecryption : IDecryptionServices { /// /// 同步方式获取解密的资源包对象 @@ -180,7 +180,7 @@ public class FileStreamTestDecryption : IDecryptionServices /// /// 资源文件偏移解密类 /// -public class FileOffsetTestDecryption : IDecryptionServices +public class TestFileOffsetDecryption : IDecryptionServices { /// /// 同步方式获取解密的资源包对象 @@ -240,7 +240,7 @@ public class FileOffsetTestDecryption : IDecryptionServices /// WebGL平台解密类 /// 注意:WebGL平台支持内存解密 /// -public class WebFileStreamTestDecryption : IWebDecryptionServices +public class TestWebFileStreamDecryption : IWebDecryptionServices { public WebDecryptResult LoadAssetBundle(WebDecryptFileInfo fileInfo) { diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestManifestEncryption.cs b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestManifestEncryption.cs new file mode 100644 index 00000000..706a84e8 --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestManifestEncryption.cs @@ -0,0 +1,55 @@ +using System; +using System.IO; +using System.Text; +using System.Collections; +using UnityEngine; +using NUnit.Framework; +using YooAsset; + +public class TestManifestEncryption : IManifestServices +{ + public byte[] ProcessManifest(byte[] fileData) + { + return XorProcess(fileData, "YOO"); + } + public byte[] RestoreManifest(byte[] fileData) + { + return XorProcess(fileData, "YOO"); + } + + /// + /// 使用异或加密/解密字节数组 + /// + /// 输入数据 + /// 加密密钥 + /// 处理后的字节数组 + public static byte[] XorProcess(byte[] data, byte[] key) + { + if (data == null) + throw new ArgumentNullException(nameof(data)); + + if (key == null || key.Length == 0) + throw new ArgumentException("Key cannot be null or empty"); + + byte[] result = new byte[data.Length]; + for (int i = 0; i < data.Length; i++) + { + // 循环使用密钥中的字节 + result[i] = (byte)(data[i] ^ key[i % key.Length]); + } + + return result; + } + + /// + /// 使用字符串密钥进行异或处理(自动转换编码) + /// + /// 输入数据 + /// 字符串密钥 + /// 处理后的字节数组 + public static byte[] XorProcess(byte[] data, string key) + { + byte[] keyBytes = System.Text.Encoding.UTF8.GetBytes(key); + return XorProcess(data, keyBytes); + } +} \ No newline at end of file diff --git a/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestManifestEncryption.cs.meta b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestManifestEncryption.cs.meta new file mode 100644 index 00000000..e1a3533e --- /dev/null +++ b/Assets/YooAsset/Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/TestManifestEncryption.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 437432f4d3838124085c13253d0c0094 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: