我正在处理一个小型Clojure项目,在这个项目中,我需要能够从一个简单的字符串生成一个NTLMv2哈希。该值将用于填充sambaNTPassword实例中的openLDAP字段。我预计这将涉及到调用一些Java来完成繁重的工作,并从这个java示例开始。但是,结果看起来不太正确,我看到了一些帖子,表明jcifs可能不是NTLMv2的好解决方案。
所以我有两个问题
发布于 2017-02-18 06:46:01
实际上,我的两个问题的答案都是通过更多的搜索和对Clojure的调试找到的。我想我会把它贴在这里以防它对别人有用。
最后一部分首先-找到了一个基于web的NTLMv2哈希生成器,因此能够使用它来验证我的输出。见Browserling NTLM Hash生成器。
现在我的解决方案。最后我让jcifs工作得很好。在将jcifs.jar安装到本地maven repo (使用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)))))https://stackoverflow.com/questions/42311512
复制相似问题