首页 > 解决方案 > .NET 核心中的 MD5 哈希是确定性的吗?

问题描述

我有一个类似于本文中描述的用例: Calculate MD5 checksum for a file

由于这篇文章显然是指 .NET Framework 并且我使用 .NET core,所以我想了解更多关于 .NET core 中的哈希。在对我进行了一些研究之后,我在 Microsoft 的System.String 文档中发现了一个声明。他们对GetHashCode()函数有以下看法:

哈希码本身不能保证是稳定的。对于单个 .NET 版本,相同字符串的哈希码在 .NET 实现、.NET 版本以及 .NET 平台(例如 32 位和 64 位)之间可能有所不同。在某些情况下,它们甚至可能因应用程序域而异。这意味着同一程序的两次后续运行可能会返回不同的哈希码。

由于我对哈希不是很熟悉,而且这种行为只发生在 .NET 核心中,所以上面的陈述让我很担心。可以使用 MD5 哈希在数据库中存储校验和吗?这个校验和在每个平台上的计算方式是否相同?还是像 GetHashCode() 一样,结果在不同平台甚至每个程序执行时都可能不同?

标签: c#.net-corehashmd5

解决方案


推荐阅读