Liking cljdoc? Tell your friends :D

crypto-password Build Status

A Clojure library for securing user passwords using a key derivation function. Supports the following algorithms:

Installation

Add the following dependency to your deps.edn file:

crypto-password/crypto-password {:mvn/version "0.4.0"}

Or to your Leiningen project file:

[crypto-password "0.4.0"]

Usage

Pick an encryption algorithm, either pbkdf2, bcrypt, scrypt or argon2:

(require '[crypto.password.<algorithm> :as password])

Then use the encrypt function to apply a secure, one-way encryption algorithm to a password:

(def encrypted (password/encrypt "foobar"))

And the check function to check the encrypted password against a plaintext password:

(password/check "foobar" encrypted) ;; => true

Defaults

The default options for the key derivation algorithms were chosen based on benchmarks carried on on a AWS t1.micro server running Ubuntu 13.10 (ami-35dbde5c), in March 2014.

On this hardware, the key derivation functions take approximately 200ms to complete with their default options. This is a short enough time to not be an inconvenience for a human being, but long enough to make brute forcing encrypted passwords very costly.

Documentation

License

Copyright © 2025 James Reeves

Distributed under the Eclipse Public License, the same as Clojure.

Can you improve this documentation? These fine people already did:
James Reeves & Gustavo Valente
Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close