ST
(defn calc-file-hash
[filename, n-bytes]
(let [file (io/file filename)
buf (byte-array n-bytes)
md (MessageDigest/getInstance "md5")]
(with-open [r (io/input-stream file)]
(loop [acc []]
(let [len (.read r buf)]
(if (pos? len)
(recur (conj acc (.digest md buf 0 len)))
acc))))))
правда у меня .digest какую то фигню возвращает, но в варианте со строками работает нормально