diff --git a/3d/Assets/Framework/Scripts/Runtime/Engine/Engine.Utility/HashUtility.cs b/3d/Assets/Framework/Scripts/Runtime/Engine/Engine.Utility/HashUtility.cs index 68b03a7..c9ea867 100644 --- a/3d/Assets/Framework/Scripts/Runtime/Engine/Engine.Utility/HashUtility.cs +++ b/3d/Assets/Framework/Scripts/Runtime/Engine/Engine.Utility/HashUtility.cs @@ -15,107 +15,29 @@ namespace MotionFramework.Utility return result.ToLower(); } - #region SHA1 [已废弃 - 使用SHA256替代] + #region SHA1 /// - /// 获取字符串的Hash值(已废弃,请使用StringSHA256) + /// 获取字符串的Hash值 /// - /// - /// SHA1算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("SHA1算法不安全,请使用StringSHA256方法", false)] public static string StringSHA1(string str) - { - // 已替换为SHA256实现以提高安全性 - return StringSHA256(str); - } - - /// - /// 获取文件的Hash值(已废弃,请使用FileSHA256) - /// - /// - /// SHA1算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("SHA1算法不安全,请使用FileSHA256方法", false)] - public static string FileSHA1(string filePath) - { - // 已替换为SHA256实现以提高安全性 - return FileSHA256(filePath); - } - - /// - /// 获取数据流的Hash值(已废弃,请使用StreamSHA256) - /// - /// - /// SHA1算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("SHA1算法不安全,请使用StreamSHA256方法", false)] - public static string StreamSHA1(Stream stream) - { - // 已替换为SHA256实现以提高安全性 - return StreamSHA256(stream); - } - - /// - /// 获取字节数组的Hash值(已废弃,请使用BytesSHA256) - /// - /// - /// SHA1算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("SHA1算法不安全,请使用BytesSHA256方法", false)] - public static string BytesSHA1(byte[] buffer) - { - // 已替换为SHA256实现以提高安全性 - return BytesSHA256(buffer); - } - #endregion - - #region SHA256 [推荐使用] - /// - /// 获取字符串的SHA256哈希值(推荐使用) - /// - /// 要计算哈希的字符串 - /// SHA256哈希值的十六进制字符串 - public static string StringSHA256(string str) { byte[] buffer = Encoding.UTF8.GetBytes(str); - return BytesSHA256(buffer); + return BytesSHA1(buffer); } /// - /// 获取文件的SHA256哈希值(推荐使用) + /// 获取文件的Hash值 /// - /// 文件路径 - /// SHA256哈希值的十六进制字符串,如果文件不存在或读取失败则返回空字符串 - public static string FileSHA256(string filePath) + public static string FileSHA1(string filePath) { try { using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { - return StreamSHA256(fs); + return StreamSHA1(fs); } } - catch (FileNotFoundException e) - { - MotionLog.Exception($"文件不存在: {filePath}\n{e}"); - return string.Empty; - } - catch (DirectoryNotFoundException e) - { - MotionLog.Exception($"目录不存在: {filePath}\n{e}"); - return string.Empty; - } - catch (UnauthorizedAccessException e) - { - MotionLog.Exception($"访问被拒绝,权限不足: {filePath}\n{e}"); - return string.Empty; - } - catch (ArgumentException e) - { - MotionLog.Exception($"参数错误: {filePath}\n{e}"); - return string.Empty; - } - catch (IOException e) + catch (Exception e) { MotionLog.Exception(e.ToString()); return string.Empty; @@ -123,18 +45,13 @@ namespace MotionFramework.Utility } /// - /// 获取数据流的SHA256哈希值(推荐使用) + /// 获取数据流的Hash值 /// - /// 要计算哈希的数据流 - /// SHA256哈希值的十六进制字符串 - /// - /// 使用SHA256算法,生成256位的散列码,提供更高的安全性 - /// - public static string StreamSHA256(Stream stream) + public static string StreamSHA1(Stream stream) { - // 使用SHA256算法替代不安全的SHA1,提供更高的安全性 + // 说明:创建的是SHA1类的实例,生成的是160位的散列码 // 使用 using 语句确保资源正确释放,防止资源泄漏 - using (SHA256 hash = SHA256.Create()) + using (HashAlgorithm hash = HashAlgorithm.Create()) { byte[] hashBytes = hash.ComputeHash(stream); return ToString(hashBytes); @@ -142,18 +59,13 @@ namespace MotionFramework.Utility } /// - /// 获取字节数组的SHA256哈希值(推荐使用) + /// 获取字节数组的Hash值 /// - /// 要计算哈希的字节数组 - /// SHA256哈希值的十六进制字符串 - /// - /// 使用SHA256算法,生成256位的散列码,提供更高的安全性 - /// - public static string BytesSHA256(byte[] buffer) + public static string BytesSHA1(byte[] buffer) { - // 使用SHA256算法替代不安全的SHA1,提供更高的安全性 + // 说明:创建的是SHA1类的实例,生成的是160位的散列码 // 使用 using 语句确保资源正确释放,防止资源泄漏 - using (SHA256 hash = SHA256.Create()) + using (HashAlgorithm hash = HashAlgorithm.Create()) { byte[] hashBytes = hash.ComputeHash(buffer); return ToString(hashBytes); @@ -161,57 +73,59 @@ namespace MotionFramework.Utility } #endregion - #region MD5 [已废弃 - 使用SHA256替代] + #region MD5 /// - /// 获取字符串的MD5(已废弃,请使用StringSHA256) + /// 获取字符串的MD5 /// - /// - /// MD5算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("MD5算法不安全,请使用StringSHA256方法", false)] public static string StringMD5(string str) { - // 已替换为SHA256实现以提高安全性 - return StringSHA256(str); + byte[] buffer = Encoding.UTF8.GetBytes(str); + return BytesMD5(buffer); } /// - /// 获取文件的MD5(已废弃,请使用FileSHA256) + /// 获取文件的MD5 /// - /// - /// MD5算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("MD5算法不安全,请使用FileSHA256方法", false)] public static string FileMD5(string filePath) { - // 已替换为SHA256实现以提高安全性 - return FileSHA256(filePath); + try + { + using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) + { + return StreamMD5(fs); + } + } + catch (Exception e) + { + MotionLog.Exception(e.ToString()); + return string.Empty; + } } /// - /// 获取数据流的MD5(已废弃,请使用StreamSHA256) + /// 获取数据流的MD5 /// - /// - /// MD5算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("MD5算法不安全,请使用StreamSHA256方法", false)] public static string StreamMD5(Stream stream) { - // 已替换为SHA256实现以提高安全性 - return StreamSHA256(stream); + // 使用 using 语句确保资源正确释放,防止资源泄漏 + using (MD5 md5 = MD5.Create()) + { + byte[] hashBytes = md5.ComputeHash(stream); + return ToString(hashBytes); + } } /// - /// 获取字节数组的MD5(已废弃,请使用BytesSHA256) + /// 获取字节数组的MD5 /// - /// - /// MD5算法已被认为不安全,已替换为SHA256实现。保留此方法仅为向后兼容。 - /// - [System.Obsolete("MD5算法不安全,请使用BytesSHA256方法", false)] public static string BytesMD5(byte[] buffer) { - // 已替换为SHA256实现以提高安全性 - return BytesSHA256(buffer); + // 使用 using 语句确保资源正确释放,防止资源泄漏 + using (MD5 md5 = MD5.Create()) + { + byte[] hashBytes = md5.ComputeHash(buffer); + return ToString(hashBytes); + } } #endregion @@ -237,27 +151,7 @@ namespace MotionFramework.Utility return StreamCRC32(fs); } } - catch (FileNotFoundException e) - { - MotionLog.Exception($"文件不存在: {filePath}\n{e}"); - return string.Empty; - } - catch (DirectoryNotFoundException e) - { - MotionLog.Exception($"目录不存在: {filePath}\n{e}"); - return string.Empty; - } - catch (UnauthorizedAccessException e) - { - MotionLog.Exception($"访问被拒绝,权限不足: {filePath}\n{e}"); - return string.Empty; - } - catch (ArgumentException e) - { - MotionLog.Exception($"参数错误: {filePath}\n{e}"); - return string.Empty; - } - catch (IOException e) + catch (Exception e) { MotionLog.Exception(e.ToString()); return string.Empty; diff --git a/3d/Assets/Plugins/UniTask/Runtime/AsyncUnit.cs b/3d/Assets/Plugins/UniTask/Runtime/AsyncUnit.cs index 1d4bc74..59d6dc1 100644 --- a/3d/Assets/Plugins/UniTask/Runtime/AsyncUnit.cs +++ b/3d/Assets/Plugins/UniTask/Runtime/AsyncUnit.cs @@ -13,6 +13,11 @@ namespace Cysharp.Threading.Tasks return 0; } + public override bool Equals(object obj) + { + return base.Equals(obj); + } + public bool Equals(AsyncUnit other) { return true;