[英].Net core string hash using SHA256
您好,SO社區我需要一些哈希技術:
我面臨着比較兩個對象列表的問題。 列表的一個實例在.Net Core 2.0應用程序中,而另一個在.Net 4.5.2應用程序中。
為了比較兩個列表(確保它們在兩個應用程序中都相同),我想計算列表的哈希值並在應用程序之間進行交換。 為了計算列表的哈希值,我正在使用此答案中描述的方法。
為此,您需要列表中對象的哈希碼,這就是我的問題所在:似乎眾所周知的事實(1) .Net核心對字符串使用隨機哈希碼行為 。 要計算對象的哈希碼,我需要包含字符串的哈希碼。
引出我的問題: 使用SHA256計算字符串的哈希值是個好主意嗎?
我想使用它的原因:
是否有更好的選擇(更有效,更輕松,更少的碰撞)?
由於大量的計算成本和使用這種哈希碼的收益非常低,可能不需要使用加密哈希函數。 僅需加法和乘法的一些基本哈希函數就足夠了-請參閱什么是重寫System.Object.GetHashCode的最佳算法? 例如用於數組/多個字段的良好哈希函數(類似於您已將問題鏈接到該字段)。 對加密哈希函數的要求比通常將值放入哈希表或基本不等式檢查所需的條件要強得多。
筆記:
GetHashCode
所需的位多8倍(256與32)。 為了獲得有意義的收益,您需要更新其余代碼以計算256位哈希碼。 如果您需要使哈希公開,SHA256是一種簡單的描述方法...但是您需要非常小心地說明如何將字符串轉換為字節數組(編碼是重要的一部分),以及在此之前是否需要任何規范化(包括String.Normalize )。
考慮其他一些機制-可能是數據的版本控制或不可變的數據結構,以實現您要查找的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.