diff --git a/src/cipher_analytical_machine/cli/actions/cracking.clj b/src/cipher_analytical_machine/cli/actions/cracking.clj new file mode 100644 index 0000000..5e68aa1 --- /dev/null +++ b/src/cipher_analytical_machine/cli/actions/cracking.clj @@ -0,0 +1,26 @@ +(ns cipher-analytical-machine.cli.actions.cracking + (:require + [cipher-analytical-machine.analyzers.caesar :as caesar-analyzers] + [cipher-analytical-machine.symbols.frequencies :as symbol-frequencies]) + (:gen-class)) + +(defn cracking-caesar + [options arguments] + (let [analyzer (:analyzer options) + message (:message options) + symbols (:symbols options) + frequencies symbol-frequencies/english-letter-frequencies] + (cond + (= analyzer "Chi^2") + (caesar-analyzers/get-plaintext message symbols frequencies) + + :else + (caesar-analyzers/get-plaintext message symbols frequencies)))) + +(defn cracking-actions + [options arguments action-type] + (let [cipher (:cipher options)] + (cond + (= cipher "Caesar") + (cracking-caesar options arguments)))) + diff --git a/src/cipher_analytical_machine/cli/actions/cryptography.clj b/src/cipher_analytical_machine/cli/actions/cryptography.clj new file mode 100644 index 0000000..cdddd12 --- /dev/null +++ b/src/cipher_analytical_machine/cli/actions/cryptography.clj @@ -0,0 +1,24 @@ +(ns cipher-analytical-machine.cli.actions.cryptography + (:require + [cipher-analytical-machine.ciphers.caesar :as caesar]) + (:gen-class)) + +(defn caesar-actions + [options arguments action-type] + (let [message (:message options) + key (Integer/parseInt (:key options)) + symbols (:symbols options)] + (cond + (= action-type :encrypt) + (caesar/encrypt-message message key symbols) + + (= action-type :decrypt) + (caesar/decrypt-message message key symbols)))) + +(defn cryptography-actions + [options arguments action-type] + (let [cipher (:cipher options)] + (cond + (= cipher "Caesar") + (caesar-actions options arguments action-type)))) + diff --git a/src/cipher_analytical_machine/cli/cli.clj b/src/cipher_analytical_machine/cli/cli.clj index 7c5fa5e..c4f67bc 100644 --- a/src/cipher_analytical_machine/cli/cli.clj +++ b/src/cipher_analytical_machine/cli/cli.clj @@ -1,12 +1,11 @@ (ns cipher-analytical-machine.cli.cli (:require [cipher-analytical-machine.cli.file :as file] - [cipher-analytical-machine.ciphers.caesar :as caesar] - [cipher-analytical-machine.analyzers.caesar :as caesar-analyzers] [cipher-analytical-machine.symbols.factories :as sf] - [cipher-analytical-machine.symbols.frequencies :as symbol-frequencies] [cipher-analytical-machine.cli.options :as options] [clojure.string :as cs] + [cipher-analytical-machine.cli.actions.cryptography :as cryptography] + [cipher-analytical-machine.cli.actions.cracking :as cracking] [clojure.tools.cli :refer [parse-opts]]) (:gen-class)) @@ -148,51 +147,16 @@ (save-output output options)) (println output)) -(defn cracking-caesar - [options arguments] - (let [analyzer (:analyzer options) - message (:message options) - symbols (:symbols options) - frequencies symbol-frequencies/english-letter-frequencies] - (cond - (= analyzer "Chi^2") - (caesar-analyzers/get-plaintext message symbols frequencies) - - (= analyzer "Frequency") - (caesar-analyzers/frequency-analizer-get-plaintext message symbols - (symbol-frequencies/map-to-string frequencies) - (:language options "en"))))) - -(defn cracking-actions - [options arguments action-type] - (let [cipher (:cipher options)] - (cond - (= cipher "Caesar") - (cracking-caesar options arguments) - ))) - -(defn crypt-actions - [options arguments action-type] - (let [message (:message options) - key (Integer/parseInt (:key options)) - symbols (:symbols options)] - (cond - (= action-type :encrypt) - (caesar/encrypt-message message key symbols) - - (= action-type :decrypt) - (caesar/decrypt-message message key symbols)))) - (defn actions [options arguments action-type] (let [options (load-all-options options)] (-> (cond (contains? #{:encrypt :decrypt} action-type) - (crypt-actions options arguments action-type) + (cryptography/cryptography-actions options arguments action-type) (= action-type :cracking) - (cracking-actions options arguments action-type)) + (cracking/cracking-actions options arguments action-type)) (show-and-save-output options))))