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: