Skip to content
 
 

digest

Clojars Project cljdoc test

A message digest library for Clojure: md5, sha-256, HMAC, raw bytes, and base64 output.

Stack

Clojure deps.edn tools.build

This namespace has several digest functions, such as md5 and sha-256. Each function accepts these input types:

  • java.lang.String
  • byte array
  • java.io.File
  • java.io.InputStream
  • Sequence of byte array

Installation

tools.deps (deps.edn):

net.clojars.savya/digest {:mvn/version "1.6.0"}

Leiningen (project.clj):

[net.clojars.savya/digest "1.6.0"]

Usage

user=> (require '[clj-commons.digest :as digest])
nil
; On a string
user=> (digest/md5 "clojure")
"32c0d97f82a20e67c6d184620f6bd322"
; On a file
user=> (require '[clojure.java.io :as io])
nil
user=> (digest/sha-256 (io/file "/tmp/hello.txt"))
"163883d3e0e3b0c028d35b626b98564be8d9d649ed8adb8b929cb8c94c735c59"
; Raw bytes
user=> (seq (digest/digest-bytes "MD5" "clojure"))
(50 -64 -39 127 -126 -94 14 103 -58 -47 -124 98 15 107 -45 34)
; Hex encoding utilities
user=> (digest/bytes->hex (byte-array [(byte 0) (byte -1)]))
"00ff"
user=> (seq (digest/hex->bytes "00FF"))
(0 -1)
; Base64
user=> (digest/digest-base64 "MD5" "clojure")
"MsDZf4KiDmfG0YRiD2vTIg=="
; HMAC
user=> (digest/hmac-sha-256 "secret" "message")
"8b5f48702995c1598c573db1e21866a9b825d4a794d169d7060a03605796360b"

String encoding (behavior change in 1.5.0)

The library encodes strings as UTF-8 before it hashes them. Earlier releases (1.4.x and before) used the JVM's default charset. On a JVM with a different default charset, the same string gave a different digest. Release 1.5.0 and later give the same output on all platforms. To get the same hash as an older release on such a JVM, give the encoding: (digest/digest "md5" s "ISO-8859-1").

Dev

Run clojure -M:test to run the test suite.

Run clojure -T:build jar to build the JAR, or clojure -T:build deploy to deploy it.

Run bb dev/gen.clj after changing the generated static digest convenience functions.

License

Copyright © 2017 Miki Tebeka miki.tebeka@gmail.com.

Maintenance fork (2026) by Savyasachi, original: https://github.com/clj-commons/digest. Distributed under the Eclipse Public License 1.0, preserving the original license.

Distributed under the Eclipse Public License (same as Clojure).

Snail image in tests is public domain by Miki Tebeka

About

Digest algorithms (md5, sha1 ...) for Clojure

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages