Как я написал в названии.
Если использовать getHashCode () в вашем приложении небезопасно, зачем его использовать? (для строк и целых чисел) Я хочу использовать его для пересечения методов и кроме методов в моделях Linq или создать свой собственный класс IEqualityCompare. Это похоже на шанс - если он не на 100% безопасен?
Или я что-то упустил?
Как указано в методе String.GetHashCode в https://docs.microsoft.com/
Важный
Если два строковых объекта равны, метод GetHashCode возвращает одинаковые значения. Однако не существует уникального значения хэш-кода для каждого уникального строкового значения. Разные строки могут возвращать один и тот же хэш-код.
Стабильность самого хэш-кода не гарантируется. Хеш-коды для идентичных строк могут различаться в разных реализациях .NET, в разных версиях .NET и на разных платформах .NET (например, 32-разрядных и 64-разрядных) для одной версии .NET. В некоторых случаях они могут даже различаться в зависимости от домена приложения. Это означает, что два последующих запуска одной и той же программы могут возвращать разные хэш-коды.
В результате хэш-коды никогда не должны использоваться вне домена приложения, в котором они были созданы, они никогда не должны использоваться в качестве ключевых полей в коллекции, и они никогда не должны сохраняться.
Наконец, не используйте хеш-код вместо значения, возвращаемого функцией криптографического хеширования, если вам нужен криптостойкий хеш-код. Для криптографических хэшей используйте класс, производный от класса System.Security.Cryptography.HashAlgorithm или System.Security.Cryptography.KeyedHashAlgorithm.
Дополнительные сведения о хэш-кодах см. В разделе Object.GetHashCode.
GetHashCode
не являются безопасными, но вам, вероятно, в любом случае не нужны безопасные хэши дляExcept
иIntersect
. - person Sweeper   schedule 07.12.2019GetHashCode
не предназначен для обеспечения безопасности. Единственная цель - создать индекс. В процитированной вами документации прямо говорится, что не использоватьGetHashCode
для безопасных хэшей, а использовать классы из пространства именSystem.Security.Cryptography
. - person Dennis_E   schedule 07.12.2019