* kana-hash Common Lisp kana hashes using CFFI. We export one function, ~make-hash~, that takes the ~string~ we want to hash, and optionally the ~algorithm~, ~salt-type~ and ~salt~ to use. ** Installation - =git clone= the repo - =$ make && sudo make install= - Add kana-hash to your quicklisp local-projects with something like =$ ln -sf `pwd`/contrib/kana-hash/ $home/quicklisp/local-projects/kana-hash= - Then in your Lisp do: #+BEGIN_SRC lisp (ql:register-local-projects) (ql:quickload :kana-hash) #+END_SRC ** Usage #+BEGIN_SRC lisp ;; Just hashing the string (kana-hash:make-hash "uguu~") ;; Using a different algorithm (kana-hash:make-hash "uguu~" :algo +algo-sha256+) ;; Using a salt ;; salt-type is implicitly set to +salt-specific+ (kana-hash:make-hash "uguu~" :salt "am I cute?") ;; Using a different algorithm and salt-type (kana-hash:make-hash "uguu~" :algo +algo-crc32+ :salt-type +salt-random+) #+END_SRC ** Algorithms We define lisp constants for the algorithms used. Input is ~uguu~~ using the default salt. | Algorithm | Output | | =+algo-sha256+= | おシソまツアでぅせヅモァだゅノぴヲろヂォセづマふげぁユねハァがゅ | | =+algo-crc32+= | わほヂァ | | =+algo-crc64+= | づやワえほぢレご | | =+algo-sha256-truncated+= | おシソまツアでぅ | ** Salt types We also define constants for salt types. Input is ~uguu~~ using the default algorithm. | Salt Type | Output | | =+salt-none+= | らニにすわムねぅ | | =+salt-default+= | おシソまツアでぅ | | =+salt-specific+= | ぱペみぇサべツュ | | =+salt-random+= | リヨみがゆヲえに | Calling ~+salt-specific+~ without a ~salt~ it will use the salt ~NIL~. Using a ~salt~ will implicitly set ~salt-type~ to ~+salt-specific+~.