blob: 1ac9af57ffd549afc4a9164ae449cc723542db14 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
(ns weepinbell.utils.digest
(:import java.security.MessageDigest)
(:require [clojure.string :refer [upper-case]]))
(defn- java-digest [^String s algo]
(let [algorithm (MessageDigest/getInstance algo)
raw-bytes (.digest algorithm (.getBytes s "UTF-8"))]
(apply str (map #(format "%02x" %) raw-bytes))))
(defn digest
([s]
(digest s :sha-256 32))
([s algo length]
(->> (java-digest s (upper-case (name algo)))
(take length)
(apply str))))
|