clj-digest / src / digest.clj

Diff from to

src/digest.clj

   [reader]
   (take-while (complement nil?) (repeatedly (partial read-some reader))))
 
+(defn- signature
+  "Get signature (string) of digest."
+  [algorithm]
+  (let [size (* 2 (.getDigestLength algorithm))
+        sig (.toString (BigInteger. 1 (.digest algorithm)) 16)
+        padding (apply str (repeat (- size (count sig)) "0"))]
+    (str padding sig)))
+
 (defmulti digest
   "Returns digest for input with given algorithm."
   (fn [algorithm message] (class message)))
   (let [algo (MessageDigest/getInstance algorithm)]
     (.reset algo)
     (dorun (map #(.update algo %) chunks))
-    (.toString (BigInteger. 1 (.digest algo)) 16)))
+    (signature algo)))
 
 (defn algorithms []
   "List support digest algorithms."
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.