anchor.diff:  .Sign/Unsign clojure hash-map
   [source,clojure]
   ----
  -(require '[buddy.crypto.signing :refer [dumps loads]])
  +(require '[buddy.sign.generic :refer [dumps loads]])
   
   ;; Sign data
   (def signed-data (dumps {:userid 1} "my-secret-key"))
  
positive.code: 
  This is a complete list of implemented hashers:
  
  - `buddy.crypto.hashers.pbkdf2` (implements pbkdf2 with sha256)
  - `byddy.crypto.hashers.bcrypt`
  - `buddy.crypto.hashers.sha256`
  - `buddy.crypto.hashers.md5`
  - `buddy.crypto.hashers.scrypt`
  
  
  Authentication
  
negative.code: Generic authorization
  ^^^^^^^^^^^^^^^^^^^^^
  
  This authorization system encapsulates your handlers/controllers in one try/catch block
  catching only notauthorized exceptions. So spliting unauthorized request handling code from
  your handlers/controllers in a separate function. Moreover, permits fast return when
  not authorized request is detected.
  
  Like authentication system, authorization is also implemented using protocols. Taking advantage of
  it, all builtin authentication backends implements this authorization protocol.
  
  Some authentication backends requires specific behavior on authorization layer (like http-basic
  that should return `WWW-Authenticate` header when request is unauthorized). 
  
  NOTE: You can overwrite the default behavior, passing your own exception handler function as
  `:unauthorized-handler` keyword parameter to backend constructor.
  
  .Example of how overwrite default behavior for unauthorized requests.
  [source,clojure]
  