summaryrefslogtreecommitdiff
path: root/src/weepinbell/utils/digest.clj
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))))