diff --git a/Oqtane.Server/Pages/Files.cshtml.cs b/Oqtane.Server/Pages/Files.cshtml.cs index 7be27e89..551be05f 100644 --- a/Oqtane.Server/Pages/Files.cshtml.cs +++ b/Oqtane.Server/Pages/Files.cshtml.cs @@ -144,7 +144,7 @@ namespace Oqtane.Pages etagInput += $":{Request.QueryString.Value}"; } - etag = Utilities.GenerateHashMD5(etagInput); + etag = Utilities.GenerateSimpleHash16(etagInput); var header = ""; if (HttpContext.Request.Headers.TryGetValue(HeaderNames.IfNoneMatch, out var ifNoneMatch)) diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs index d38fe490..30e25bb2 100644 --- a/Oqtane.Shared/Shared/Utilities.cs +++ b/Oqtane.Shared/Shared/Utilities.cs @@ -620,11 +620,17 @@ namespace Oqtane.Shared } } - public static string GenerateHashMD5(string input) + public static string GenerateSimpleHash16(string text) { - var bytes = Encoding.UTF8.GetBytes(input); - var hashBytes = MD5.HashData(bytes); - return Convert.ToHexString(hashBytes); + unchecked // prevent overflow exception + { + long hash = 23; + foreach (char c in text) + { + hash = hash * 31 + c; + } + return hash.ToString("X16"); + } } [Obsolete("ContentUrl(Alias alias, int fileId) is deprecated. Use FileUrl(Alias alias, int fileId) instead.", false)]