我正在开发一个小型Clojure项目,我需要能够从普通字符串生成NTLMv2哈希。该值将用于填充openLDAP实例中的sambaNTPassword字段。我预计这将涉及调用一些Java库来完成繁重的工作并从这个java example开始。但是,结果看起来不对,我看到一些帖子表明jcif可能不是NTLMv2的好解决方案。
所以我有两个问题
有没有人知道我可以用来生成NTLMv2哈希的简单脚本,我可以将其用作检查脚本,即与我从解决方案中获得的输出进行比较。
对其他Java库的任何建议可能更适合此任务?
答案 0 :(得分:2)
实际上找到了我的问题的答案,更多的搜索和更多的Clojure调试。我想把它贴在这里,以防它对其他人有用。
最后一部分 - 找到一个基于Web的NTLMv2哈希生成器,因此能够使用它来验证我的输出。请参阅Browserling NTLM Hash Generator。
现在,我的解决方案。我最终让jcifs工作得很好。在将jcifs.jar安装到我的本地maven repo(使用lein-localrepo)之后,这非常简单 - 即使大多数代码已经在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)))))