【问题标题】:Is there a C# method of hash generation where the order of the values doesn't matter?是否存在值的顺序无关紧要的 C# 哈希生成方法?
【发布时间】:2013-10-13 17:56:24
【问题描述】:

我希望从值列表中生成哈希值,例如:

54 2040 37 19 45

生成与

相同的哈希值

2040 45 19 54 37

狗猫房车

生成与以下相同的哈希:

家猫狗车

基本上重要的是值,而不是顺序

【问题讨论】:

  • 在散列之前对列表进行排序怎么样?这能满足您的需求吗?
  • 只需使用可交换运算符,例如 + 或 ^ (xor)。总是解释为什么你问这个问题。

标签: c# hash compression


【解决方案1】:

另一种解决方案是在调用“普通”哈希函数(如 md5、sha-1、sha-256)之前按字母/数字对字符串进行排序,并在对其进行去哈希处理时执行相同操作。

【讨论】:

  • 要排序,不要排序。在一次通过增加 256 个值的表中每个字节的计数。然后您可以再次一次生成排序结果。 O(n)。
  • 马克你能详细说明你的意思吗?看起来很有趣,但我不太明白。
【解决方案2】:

单独散列元素并异或它们的散列。

但请注意,我不知道这样做会带来任何安全隐患(如果重要的话)。

【讨论】:

    猜你喜欢
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2020-09-10
    • 1970-01-01
    • 2019-03-19
    • 2011-12-11
    • 2015-02-15
    相关资源
    最近更新 更多