PageRenderTime 54ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/test/rsa_cryptography/test/core.clj

https://github.com/topher200/rsa-cryptography
Clojure | 62 lines | 49 code | 13 blank | 0 comment | 19 complexity | 84e4770fe8fea61a153ef922003e75fb MD5 | raw file
  1. (ns rsa-cryptography.test.core
  2. (:use [rsa-cryptography.core] :reload)
  3. (:use [clojure.test]))
  4. (deftest big-integer-test
  5. (is (= 10 (big-integer 10))))
  6. (deftest division-with-remainder-test
  7. (is (= [0 0] (division-with-remainder 0 1)))
  8. (is (= [1 0] (division-with-remainder 1 1)))
  9. (is (= [0 1] (division-with-remainder 1 2)))
  10. (is (= [0 1] (division-with-remainder 1 3)))
  11. (is (= [0 2] (division-with-remainder 2 3)))
  12. (is (= [1 1] (division-with-remainder 3 2)))
  13. (is (= [2 2] (division-with-remainder 8 3))))
  14. (deftest coprime-test
  15. (is (coprime 3 7))
  16. (is (coprime 15 7))
  17. (is (not (coprime 3 6))))
  18. (deftest extended-gcd-test
  19. (is (= [1 0] (extended-gcd 1 0)))
  20. (is (= [-9 47] (extended-gcd 120 23)))
  21. (is (= [-367 2] (extended-gcd 17 3120))))
  22. (deftest modular-multiplicative-inverse-test
  23. (is (= 2753 (modular-multiplicative-inverse 17 3120))))
  24. (deftest find-two-unique-primes-test
  25. (is (apply not= (find-two-unique-primes 16))))
  26. (deftest generate-totient-test
  27. (is (= 3120 (generate-totient (big-integer 61) (big-integer 53)))))
  28. (deftest generate-encrypt-key-test
  29. (defn test-totient [totient]
  30. (let [e (generate-encrypt-key totient)]
  31. (and (< e totient) (coprime e totient))))
  32. (is (test-totient 10))
  33. (is (test-totient 100))
  34. (is (test-totient 1000000)))
  35. (deftest generate-keys-test
  36. (is (every? #(not= nil %)
  37. (map #(find (generate-keys 16) %) [:modulus :d :e]))))
  38. (deftest encrypt-message-test
  39. (is (= 2790 (encrypt-message 65 17 3233))))
  40. (deftest decrypt-message-test
  41. (is (= 65 (decrypt-message 2790 2753 3233))))
  42. (deftest encrypt-and-decrypt-test
  43. (is (= 65 (decrypt-message (encrypt-message 65 17 3233) 2753 3233))))
  44. (deftest encrypt-and-decrypt-random-message-test
  45. (let [keys (generate-keys 16)
  46. message (rand-int 100000)]
  47. (is (= message (decrypt-message (encrypt-message message
  48. (:e keys) (:modulus keys))
  49. (:d keys) (:modulus keys))))))