diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs index b9e747fc..ccc5c652 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs @@ -69,8 +69,7 @@ namespace YooAsset if (_steps == ESteps.VerifyFileData) { - string fileHash = HashUtility.BytesCRC32(_webDataRequestOp.Result); - if (fileHash == _packageHash) + if (ManifestTools.VerifyManifestData(_webDataRequestOp.Result, _packageHash)) { _steps = ESteps.LoadManifest; } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs index 96605fef..711f19cd 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs @@ -59,8 +59,7 @@ namespace YooAsset if (_steps == ESteps.VerifyFileData) { - string fileHash = HashUtility.BytesCRC32(_fileData); - if (fileHash == _packageHash) + if (ManifestTools.VerifyManifestData(_fileData, _packageHash)) { _steps = ESteps.LoadManifest; } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs index 33801580..cad37d04 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs @@ -59,8 +59,7 @@ namespace YooAsset if (_steps == ESteps.VerifyFileData) { - string fileHash = HashUtility.BytesCRC32(_fileData); - if (fileHash == _packageHash) + if (ManifestTools.VerifyManifestData(_fileData, _packageHash)) { _steps = ESteps.LoadManifest; } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs index f204c7f4..13b2a653 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs @@ -72,8 +72,7 @@ namespace YooAsset if (_steps == ESteps.VerifyFileData) { - string fileHash = HashUtility.BytesCRC32(_webDataRequestOp.Result); - if (fileHash == _packageHash) + if (ManifestTools.VerifyManifestData(_webDataRequestOp.Result, _packageHash)) { _steps = ESteps.LoadManifest; } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs index 9d570998..e727b86a 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs @@ -69,8 +69,7 @@ namespace YooAsset if (_steps == ESteps.VerifyFileData) { - string fileHash = HashUtility.BytesCRC32(_webDataRequestOp.Result); - if (fileHash == _packageHash) + if (ManifestTools.VerifyManifestData(_webDataRequestOp.Result, _packageHash)) { _steps = ESteps.LoadManifest; } diff --git a/Assets/YooAsset/Runtime/ResourcePackage/ManifestTools.cs b/Assets/YooAsset/Runtime/ResourcePackage/ManifestTools.cs index c5a28ba5..8d239c64 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/ManifestTools.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/ManifestTools.cs @@ -8,6 +8,30 @@ namespace YooAsset { internal static class ManifestTools { + /// + /// 验证清单文件的二进制数据 + /// + public static bool VerifyManifestData(byte[] fileData, string hashValue) + { + if (fileData == null || fileData.Length == 0) + return false; + if (string.IsNullOrEmpty(hashValue)) + return false; + + // 注意:兼容俩种验证方式 + // 注意:计算MD5的哈希值通常为32个字符 + string fileHash; + if (hashValue.Length == 32) + fileHash = HashUtility.BytesMD5(fileData); + else + fileHash = HashUtility.BytesCRC32(fileData); + + if (fileHash == hashValue) + return true; + else + return false; + } + /// /// 序列化(JSON文件) ///