From 51609b1d27a52de21e498cafcde062e0a3f38bb0 Mon Sep 17 00:00:00 2001 From: KKlochko Date: Thu, 5 Oct 2023 20:10:05 +0300 Subject: [PATCH] Add the clojure wrapper for the frequency analizer and its test. --- src/cipher_analytical_machine/caesar_analyzers.clj | 11 +++++++++++ .../caesar_analyzers_test.clj | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/cipher_analytical_machine/caesar_analyzers.clj b/src/cipher_analytical_machine/caesar_analyzers.clj index 4d71f06..8030d5a 100644 --- a/src/cipher_analytical_machine/caesar_analyzers.clj +++ b/src/cipher_analytical_machine/caesar_analyzers.clj @@ -2,6 +2,8 @@ (:require [cipher-analytical-machine.caesar :as caesar] [clojure.string :as cs] [cipher-analytical-machine.cipher-analyzers :as ca]) + (:import [cipher_analytical_machine.ciphers.caesar Decrypted] + [cipher_analytical_machine.analizers.caesar FrequencyAnalyzer]) (:gen-class)) (defn get-all-texts @@ -46,3 +48,12 @@ (get-key ciphertext symbols letter-frequences) symbols))) +(defn frequency-analizer-get-plaintext + "Return the plaintext from a ciphertext using simple analizer. The function is case-insensitive." + [ciphertext symbols letter-frequences] + (let [decrypt (reify Decrypted + (decrypt [this message key symbols] + (caesar/decrypt-message message key symbols)))] + (-> (new FrequencyAnalyzer ciphertext symbols letter-frequences decrypt) + .crack))) + diff --git a/test/cipher_analytical_machine/caesar_analyzers_test.clj b/test/cipher_analytical_machine/caesar_analyzers_test.clj index 2a06d97..1d26e0c 100644 --- a/test/cipher_analytical_machine/caesar_analyzers_test.clj +++ b/test/cipher_analytical_machine/caesar_analyzers_test.clj @@ -74,3 +74,13 @@ (is (= (cs/lower-case plaintext) (get-plaintext ciphertext symbols frequences)))))) +(deftest frequency-analizer-get-plaintext-test + (let [plaintext "abc" + ciphertext "bca" + key 1 + symbols "abc" + frequences sf/english-letter-frequences] + (testing "The ciphertext is 'bca' and key is 1." + (is (= plaintext + (frequency-analizer-get-plaintext ciphertext symbols frequences)))))) +