【问题标题】:Create hash for array irrespective of element order无论元素顺序如何,都为数组创建哈希
【发布时间】:2017-09-27 12:36:43
【问题描述】:

如果我有一个包含两个元素的数组,我想对其进行 sha1 散列,那么无论元素的顺序如何,最好的散列方法是什么。这个问题也适用于更大的数组和多维数组。

所以[a=1,b=2][b=2,a=1] 将返回相同的哈希值。

node.js 的 Object-Hash 就是这样做的例子。

【问题讨论】:

  • 你打算如何使用 sha1 呢?也许对数组进行排序可以满足您的需求。
  • Barmar 的回答是正确的;您应该接受它以将问题标记为已解决;它可以帮助包括您自己在内的所有人。
  • @Qirel 很好奇你为什么拒绝编辑stackoverflow.com/review/suggested-edits/15986022 “此编辑引入了无助于定义问题主题的标签。” - 两个建议的标签都适合这个问题,恕我直言。
  • @Fred -ii- 你为什么告诉我这么快就接受答案。我才刚醒。我很困惑我做错了什么来警告这样的基本建议?
  • 哦;所以你是那种发布答案然后离开的类型,10-4。只是为了找到一个似乎不符合要求的答案。别人问了你另一个问题,但没有回答;只有我。

标签: php arrays hash


【解决方案1】:

按键对数组进行排序,然后对其进行序列化,然后对其进行哈希处理。

ksort($array);
$hash = sha1(serialize($array));

【讨论】:

  • 我考虑过排序,但不确定可靠性。如果来自 nodejs 的 Object-Sort 采用相同的方法,我会很感兴趣
  • 看起来确实如此。源代码是here。请参阅第 219 行 var keys = Object.keys(object).sort();
猜你喜欢
  • 1970-01-01
  • 2011-04-20
  • 2010-11-28
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多