TODO:
- Fix unsafe hex-to-bytes function
- Add Circle CI step for marginalia and deploy to pghale.com/cryptopals.html
- Redirect /cryptopals to /cryptopals.html
- Base64 algorithm: c. Swap 'unsafe' hex-to-bytes for a safer hex lookup (dict?)
- Roll your own bitCount function / Hamming weight fn (although hotspot calls a CPU instruction on Core processors :))
- Make everything lazy?
- Roll your own AES implementation
- Make 'implement repeating key XOR' a command line function.
- Make it a binary using GraalVM.
- Layer on clojure spec for the public fns.
- experiment with generative testing based on specs
- Profile with YourKit / VisualVM.
- This revealed that chi-square is a hotspot, as well as the basic division and multiplication fns. I think this is because many of the numbers get really large with that default value of 0.00001 for missing observations. Look into making that value smaller.
;; (t/deftest test-base64-to-str ;; (let [decoded "Man is distinguished, not only by his reason, but by" ;; encoded (.encode (Base64/getEncoder) (.getBytes decoded))] ;; (t/is (= decoded (s/base64-to-str encoded) ))))