【发布时间】:2019-01-06 10:34:03
【问题描述】:
我有工作代码,我可以在其中使用(hash data-structure) 获取数据结构的哈希码,但它在其中少量工作。当我有几百万个数据结构时,它会开始给我重复的哈希(冲突)。当数据结构的结构未知时,如何获得更独特的东西?
【问题讨论】:
标签: clojure clojure-java-interop
我有工作代码,我可以在其中使用(hash data-structure) 获取数据结构的哈希码,但它在其中少量工作。当我有几百万个数据结构时,它会开始给我重复的哈希(冲突)。当数据结构的结构未知时,如何获得更独特的东西?
【问题讨论】:
标签: clojure clojure-java-interop
你总是可以求助于 md5(或其他任何东西,真的)。
(defn md5 [^String s]
(let [algorithm (MessageDigest/getInstance "MD5")
raw (.digest algorithm (.getBytes s))]
(format "%032x" (BigInteger. 1 raw))))
(defn md5-hash [s] (md5 (pr-str s)))
(md5-hash {:a [1 2 3 '(5 6 7)]})
=> "8f941424e629b876cdcb51509521870d"
另外,您可以使用 Java 序列化而不是 pr-str。
【讨论】:
This library 已经存在了一段时间,而且我已经看到了至少一种替代方案。
【讨论】: