实际上,通过更多的搜索和对我的 Clojure 的更多调试,我找到了我的两个问题的答案。想我会把它贴在这里以防万一它对其他人有用。
最后一部分首先 - 找到了一个基于 Web 的 NTLMv2 哈希生成器,因此能够使用它来验证我的输出。请参阅Browserling NTLM 哈希生成器。
现在,我的解决方案。我最终让 jcifs 正常工作。在将 jcifs.jar 安装到我的本地 maven 存储库(使用 lein-localrepo)之后,这非常容易——我确实认为我更喜欢使用 Clojure,即使大部分代码已经在 Java 中。我不是clojure专家,但这应该很清楚(我希望)
(ns cifs-clj.core
(:import [jcifs.util Hexdump MD4])
(:gen-class))
(defn hash-nt-password [pwd]
(let [pwd-bytes (.getBytes pwd "UnicodeLittleUnmarked")
md4 (doto (MD4.)
(.engineUpdate pwd-bytes 0 (alength pwd-bytes)))
hash-bytes (.engineDigest md4)]
(Hexdump/toHexString hash-bytes 0 (* 2 (alength hash-bytes)))))