This commit is contained in:
DESKTOP-PB0N82B\admin 2025-11-05 10:06:46 +08:00
parent dc1fd35524
commit a180ede8cf
2 changed files with 52 additions and 153 deletions

View File

@ -15,107 +15,29 @@ namespace MotionFramework.Utility
return result.ToLower();
}
#region SHA1 [ - 使SHA256替代]
#region SHA1
/// <summary>
/// 获取字符串的Hash值已废弃请使用StringSHA256
/// 获取字符串的Hash值
/// </summary>
/// <remarks>
/// SHA1算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[System.Obsolete("SHA1算法不安全请使用StringSHA256方法", false)]
public static string StringSHA1(string str)
{
// 已替换为SHA256实现以提高安全性
return StringSHA256(str);
}
/// <summary>
/// 获取文件的Hash值已废弃请使用FileSHA256
/// </summary>
/// <remarks>
/// SHA1算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[System.Obsolete("SHA1算法不安全请使用FileSHA256方法", false)]
public static string FileSHA1(string filePath)
{
// 已替换为SHA256实现以提高安全性
return FileSHA256(filePath);
}
/// <summary>
/// 获取数据流的Hash值已废弃请使用StreamSHA256
/// </summary>
/// <remarks>
/// SHA1算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[System.Obsolete("SHA1算法不安全请使用StreamSHA256方法", false)]
public static string StreamSHA1(Stream stream)
{
// 已替换为SHA256实现以提高安全性
return StreamSHA256(stream);
}
/// <summary>
/// 获取字节数组的Hash值已废弃请使用BytesSHA256
/// </summary>
/// <remarks>
/// SHA1算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[System.Obsolete("SHA1算法不安全请使用BytesSHA256方法", false)]
public static string BytesSHA1(byte[] buffer)
{
// 已替换为SHA256实现以提高安全性
return BytesSHA256(buffer);
}
#endregion
#region SHA256 [使]
/// <summary>
/// 获取字符串的SHA256哈希值推荐使用
/// </summary>
/// <param name="str">要计算哈希的字符串</param>
/// <returns>SHA256哈希值的十六进制字符串</returns>
public static string StringSHA256(string str)
{
byte[] buffer = Encoding.UTF8.GetBytes(str);
return BytesSHA256(buffer);
return BytesSHA1(buffer);
}
/// <summary>
/// 获取文件的SHA256哈希值推荐使用
/// 获取文件的Hash值
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>SHA256哈希值的十六进制字符串如果文件不存在或读取失败则返回空字符串</returns>
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
}
/// <summary>
/// 获取数据流的SHA256哈希值推荐使用
/// 获取数据流的Hash值
/// </summary>
/// <param name="stream">要计算哈希的数据流</param>
/// <returns>SHA256哈希值的十六进制字符串</returns>
/// <remarks>
/// 使用SHA256算法生成256位的散列码提供更高的安全性
/// </remarks>
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
}
/// <summary>
/// 获取字节数组的SHA256哈希值推荐使用
/// 获取字节数组的Hash值
/// </summary>
/// <param name="buffer">要计算哈希的字节数组</param>
/// <returns>SHA256哈希值的十六进制字符串</returns>
/// <remarks>
/// 使用SHA256算法生成256位的散列码提供更高的安全性
/// </remarks>
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
/// <summary>
/// 获取字符串的MD5已废弃请使用StringSHA256
/// 获取字符串的MD5
/// </summary>
/// <remarks>
/// MD5算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[System.Obsolete("MD5算法不安全请使用StringSHA256方法", false)]
public static string StringMD5(string str)
{
// 已替换为SHA256实现以提高安全性
return StringSHA256(str);
byte[] buffer = Encoding.UTF8.GetBytes(str);
return BytesMD5(buffer);
}
/// <summary>
/// 获取文件的MD5已废弃请使用FileSHA256
/// 获取文件的MD5
/// </summary>
/// <remarks>
/// MD5算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[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;
}
}
/// <summary>
/// 获取数据流的MD5已废弃请使用StreamSHA256
/// 获取数据流的MD5
/// </summary>
/// <remarks>
/// MD5算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[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);
}
}
/// <summary>
/// 获取字节数组的MD5已废弃请使用BytesSHA256
/// 获取字节数组的MD5
/// </summary>
/// <remarks>
/// MD5算法已被认为不安全已替换为SHA256实现。保留此方法仅为向后兼容。
/// </remarks>
[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;

View File

@ -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;