Skip to content

Instantly share code, notes, and snippets.

@dfuenzalida
Last active December 9, 2019 05:36
Show Gist options
  • Save dfuenzalida/3a6614985bdcd01e72598bc0d126956b to your computer and use it in GitHub Desktop.
Save dfuenzalida/3a6614985bdcd01e72598bc0d126956b to your computer and use it in GitHub Desktop.
Desafio 2018-12-08 en ClojureScript
(ns demo.main
(:import [goog.crypt Sha512]
[goog.string format])
(:require [goog.crypt]))
(defn sha-512 [s]
(let [digester (doto (goog.crypt.Sha512.) .reset (.update s))]
(->> (.digest digester) goog.crypt.byteArrayToHex)))
(defn four-digits [n]
(goog.string.format "%04d" n))
(defn crack [target]
(->> (map four-digits (range 10000))
(filter (comp #{target} sha-512))
first))
(defn main! []
(let [hashes
["d0d7cc0cbf21d971606685c15f896bbfd6b1f99e1c2a3fa8381c622f57fab8877ef56d8f88f634829adea9088db05326eaf6fb9253554dd873b11b59b341f09b"
"d1dfa57bff540ec0baac90a1897f1b5e9a9a6bec30f070e33eabc4fc1fbed54dd76c4eb793dbd7accacd604903b6376325ea4e887b38e48bec4b76cf2c301549"
"be3283db5ebd65a0db49edeaa8801e64bd2c0303d38bd94d4f38ec5596ba280c8368e64adc3a1f5600fb7642ecf6e911fdcd6fb1ec7492bbb2855ab9bd1962ce"
"a4e709497bd88e9987529eca36bd3e5249d7ecd178c90c5999871b36f1016a7f040b4646665e49d8a344a77be6935af17282e7e57ae64c9bb487ad8a46666561"
"15f13e170a5bb2759f79deaf4edb6f3c8ceae5fe09bb70c168f6b70f08e97ad736771c9f3fc34a721b3d4bbb5c18f48d965178f0274372767934ee89375fdb20"]]
(dorun
(map (comp println crack) hashes))))
;; $ yarn install && yarn compile
;; [...]
;; $ time node target/main.js
;; [... 5 numbers omitted...]
;; real 0m0.693s
;; user 0m0.814s
;; sys 0m0.029s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment