anchor.diff:  ;; => true
   ----
   
  -NOTE: hasher functions, unlike cryptographic hash functions, expect strings instead
  -of bytes.
  -
   == Advanced options
  +
  +=== Algorithm tunning params
   
   Each algorithm can be tweaked passing additional parameters on the second argument
   to *encrypt* function. And options vary depending on the used algorithm.
  
positive.code: | `:md5`             | No               | Simple hash based password hasher that uses md5.
  |===========================================================================
  
  == Project Maturity
  
  Since _buddy-hashers_ is a young project there can be some API breakage.
  
  
  == Install
  
  This section covers the _buddy-hashers_ library installing process and its requirements.
  
  
  === Requirements
  
  _buddy-hashers_ is tested with these platforms:
  
  
negative.code: | `:md5` | `:salt` | salt=random
  |==========================================================
  
  === Limiting algorithms
  
  Some times you don't want to use all the supported algorithms and you only want
  to use a own set of algorithms in the password check process. That can be done
  passing additional parameter to the `check` function:
  
  [source, clojure]
  ----
  (def trusted-algs #{:pbkdf2+sha256 :bcrypt+sha512})
  
  (hashers/check incoming-pwd encrypted-pwd {:limit trusted-algs})
  ----
  
  The `check` function will return false if the incoming password uses an algorithm
  that does not allowed.
  
  
  === Rehash Hook
  
  When time passes, the password hashers config is constantly updated for to be
  aligned with the latest security standards but you have a big database with users
  that are using password with now weak password configuration.
  
  *buddy-hashers* comes with a solution for it. It consists in a hook for password
  check process that if the password is correctly verified and is detected that has
  weak configuration, will be called with the plain password. That process allows
  to be reactive and update the users password (when the user does login as example)
  along hashers configuration is changed.
  
  [source, clojure]
  ----
  (letfn [(setter [pwd]
            (let [pwd (hashers/encrypt pwd)]
              (do-the-db-update pwd)))]
    (hashers/check incoming-pwd encrypted-pwd {:setter setter}))
  ----
  
  The setter will be called when the incoming password is valid but its config
  is weaker that the current default one.
  
  
  == Developers Guide
  
  === Philosophy
  
  