From 4449607449842b58618b3fb73696b5b4e175a09c Mon Sep 17 00:00:00 2001 From: javalsai Date: Tue, 24 Mar 2026 14:37:40 +0100 Subject: [PATCH] fix: bit mixing so the fn was basically $ka + kb + kc + ... = k(a + b + c + d)$, so completely useless, this mixes better, and also position independent and now my lovely dancing lain falls under the root domain path hash --- src/server/services/not_found.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/services/not_found.rs b/src/server/services/not_found.rs index 8e15d0b..87bc9db 100644 --- a/src/server/services/not_found.rs +++ b/src/server/services/not_found.rs @@ -11,9 +11,10 @@ fn mix_u32s(seed: impl Iterator) -> u32 { const U32_BIT_MIXING_CONSTANT: u32 = 0x7feb_352d; const U32_SELF_BIT_MIXING: u32 = 0x846c_a68b; - let mut random = seed.fold(0_u32, |acc, e| { + let mut random = seed.fold(0_u32, |mut acc, e| { // mix bits - acc.wrapping_add(e.wrapping_mul(U32_BIT_MIXING_CONSTANT)) + acc ^= e.wrapping_mul(e); + acc.wrapping_mul(U32_BIT_MIXING_CONSTANT).wrapping_add(e) }); // GPT's suggestion for a nicer distribution, like 8 cpu instructions so whatever