diff --git a/GameFrameX.Foundation.Hash/Md5Helper.cs b/GameFrameX.Foundation.Hash/Md5Helper.cs
index a6e8c36..fb2290a 100644
--- a/GameFrameX.Foundation.Hash/Md5Helper.cs
+++ b/GameFrameX.Foundation.Hash/Md5Helper.cs
@@ -31,6 +31,7 @@
// Official Documentation: https://gameframex.doc.alianblank.com/
// ==========================================================================================
+using System.Diagnostics.CodeAnalysis;
using System.Security.Cryptography;
using System.Text;
@@ -62,6 +63,7 @@ public static class Md5Helper
/// 是否返回大写形式的哈希值,默认为false返回小写 / Whether to return uppercase hash, defaults to false for lowercase
/// 32个字符的十六进制字符串形式的哈希值 / A 32-character hexadecimal string hash value
/// 当 为 null 时抛出 / Thrown when is null
+ [SuppressMessage("Sonar Code Smell", "S4790:Use a stronger hashing algorithm", Justification = "MD5 is intentionally used here for non-cryptographic checksum / fingerprint / cache-key scenarios; for security-sensitive use cases call Sha256Helper instead.")]
public static string Hash(string input, bool isUpper = false)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
@@ -104,6 +106,7 @@ public static string HashWithSalt(string input, string salt, bool isUpper = fals
/// 是否返回大写形式的哈希值,默认为false返回小写 / Whether to return uppercase hash, defaults to false for lowercase
/// 32个字符的十六进制字符串形式的哈希值 / A 32-character hexadecimal string hash value
/// 当 或 为 null 时抛出 / Thrown when or is null
+ [SuppressMessage("Sonar Code Smell", "S4790:Use a stronger hashing algorithm", Justification = "MD5 is intentionally used here for non-cryptographic checksum / fingerprint / cache-key scenarios; for security-sensitive use cases call Sha256Helper instead.")]
public static string HashWithSalt(string input, byte[] salt, bool isUpper = false)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
@@ -130,6 +133,7 @@ public static string HashWithSalt(string input, byte[] salt, bool isUpper = fals
/// 是否返回大写形式的哈希值,默认为false返回小写 / Whether to return uppercase hash, defaults to false for lowercase
/// 32个字符的十六进制字符串形式的哈希值 / A 32-character hexadecimal string hash value
/// 当 为 null 时抛出 / Thrown when is null
+ [SuppressMessage("Sonar Code Smell", "S4790:Use a stronger hashing algorithm", Justification = "MD5 is intentionally used here for non-cryptographic checksum / fingerprint / cache-key scenarios; for security-sensitive use cases call Sha256Helper instead.")]
public static string Hash(byte[] input, bool isUpper = false)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
@@ -149,6 +153,7 @@ public static string Hash(byte[] input, bool isUpper = false)
/// 要计算哈希值的流,不能为null / The stream to compute the hash for, cannot be null
/// 32个字符的十六进制字符串形式的哈希值 / A 32-character hexadecimal string hash value
/// 当 为 null 时抛出 / Thrown when is null
+ [SuppressMessage("Sonar Code Smell", "S4790:Use a stronger hashing algorithm", Justification = "MD5 is intentionally used here for non-cryptographic checksum / fingerprint / cache-key scenarios; for security-sensitive use cases call Sha256Helper instead.")]
public static string Hash(Stream input)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));
@@ -163,6 +168,7 @@ public static string Hash(Stream input)
/// 要计算哈希值的流 / The stream to compute the hash for
/// 用于取消异步操作的令牌 / Token used to cancel the asynchronous operation
/// 小写十六进制字符串形式的哈希值 / The lowercase hexadecimal hash value
+ [SuppressMessage("Sonar Code Smell", "S4790:Use a stronger hashing algorithm", Justification = "MD5 is intentionally used here for non-cryptographic checksum / fingerprint / cache-key scenarios; for security-sensitive use cases call Sha256Helper instead.")]
public static async Task HashAsync(Stream input, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(input, nameof(input));