+
numerical_methods/lu_decomposition.h
-
+
Node1
-
-numerical_methods/lu
-_decomposition.h
+
+numerical_methods/lu
+_decomposition.h
Node2
-
-
-numerical_methods/lu
-_decompose.cpp
+
+
+ciphers/hill_cipher.cpp
Node1->Node2
-
-
+
+
+
+
+
+Node3
+
+
+numerical_methods/lu
+_decompose.cpp
+
+
+
+
+
+Node1->Node3
+
+
diff --git a/d7/db9/hill__cipher_8cpp.html b/d7/db9/hill__cipher_8cpp.html
new file mode 100644
index 000000000..d2535ff1c
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp.html
@@ -0,0 +1,631 @@
+
+
+
+
+
+
+
+Algorithms_in_C++: ciphers/hill_cipher.cpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Algorithms_in_C++
+ 1.0.0
+
+ Set of algorithms implemented in C++.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Implementation of Hill cipher algorithm.
+More...
+
#include <cassert>
+
#include <cmath>
+
#include <cstring>
+
#include <ctime>
+
#include <fstream>
+
#include <iomanip>
+
#include <iostream>
+
#include <string>
+
#include "../numerical_methods/lu_decomposition.h "
+
+
+ ciphers
+ Algorithms for encryption and decryption.
+
+
+
+
Implementation of Hill cipher algorithm.
+
Program to generate the encryption-decryption key and perform encryption and decryption of ASCII text using the famous block cipher algorithm. This is a powerful encryption algorithm that is relatively easy to implement with a given key. The strength of the algorithm depends on the size of the block encryption matrix key; the bigger the matrix, the stronger the encryption and more difficult to break it. However, the important requirement for the matrix is that:
+matrix should be invertible - all inversion conditions should be satisfied and
+its determinant must not have any common factors with the length of character set Due to this restriction, most implementations only implement with small 3x3 encryption keys and a small subset of ASCII alphabets.
+
+
In the current implementation, I present to you an implementation for generating larger encryption keys (I have attempted upto 10x10) and an ASCII character set of 97 printable characters. Hence, a typical ASCII text file could be easily encrypted with the module. The larger character set increases the modulo of cipher and hence the matrix determinants can get very large very quickly rendering them ill-defined.
+
Note This program uses determinant computation using LU decomposition from the file lu_decomposition.h
+
+The matrix generation algorithm is very rudimentary and does not guarantee an invertible modulus matrix.
+
Todo: Better matrix generation algorithm.
+
Author Krishna Vedala
+
+
+
◆ main()
+
+
+
+
+
+ int main
+ (
+ )
+
+
+
+
+
Main function
+
+
+
+
+
+
537 std::string text =
"This is a simple text with numb3r5 and exclamat!0n." ;
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ operator<<()
+
+
+
+
+template<typename T >
+
+
+
operator to print a matrix
+
+
+
56 const char separator =
' ' ;
+
+
58 for (
size_t row = 0; row < v.size(); row++) {
+
59 for (
size_t col = 0; col < v[row].size(); col++)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ test1()
+
+
+
+
+
Self test 1 - using 3x3 randomly generated key.
+
Parameters
+
+ text string to encrypt and decrypt
+
+
+
+
+
+
472 std::cout <<
"======Test 1 (3x3 key) ======\nOriginal text:\n\t" << text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
491 out_file <<
"Block size: " << ekey.
size () <<
"\n" ;
+
492 out_file <<
"Encryption Key:\n" << ekey;
+
493 out_file <<
"\nDecryption Key:\n" << dkey;
+
+
+
496 assert(txt_back == text);
+
+
+
+
+
+
+
+
+
◆ test2()
+
+
+
+
+
Self test 2 - using 8x8 randomly generated key.
+
Parameters
+
+ text string to encrypt and decrypt
+
+
+
+
+
+
507 std::cout <<
"======Test 2 (8x8 key) ======\nOriginal text:\n\t" << text
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
522 out_file <<
"Block size: " << ekey.
size () <<
"\n" ;
+
523 out_file <<
"Encryption Key:\n" << ekey;
+
524 out_file <<
"\nDecryption Key:\n" << dkey;
+
+
+
527 assert(txt_back.
compare (0, text.
size (), text) == 0);
+
+
+
+
+
+
+
+
+
+void mov(tower *From, tower *To)
Definition: tower_of_hanoi.cpp:39
+
+int main()
Definition: knuth_morris_pratt.cpp:76
+int main()
Definition: fenwick_tree.cpp:69
+void ternary_search(int N, int A[], int target)
Definition: ternary_search.cpp:127
+
+void test3()
Definition: smallest_circle.cpp:188
+int main(void)
Definition: decimal_to_hexadecimal.cpp:11
+void method2(int number)
Definition: decimal_to_binary.cpp:27
+int main()
Definition: exponential_search.cpp:74
+
+ll mat_size
Definition: matrix_exponentiation.cpp:45
+int main()
Definition: stairs_pattern.cpp:17
+int hash_search(int key, int *counter)
Definition: hash_search.cpp:76
+
+void shell_sort(T *arr, size_t LEN)
Definition: shell_sort2.cpp:45
+std::string tolowerRoman(int n)
Definition: decimal_to_roman_numeral.cpp:24
+void test_f(const int NUM_DATA)
Definition: shell_sort2.cpp:145
+String search algorithms.
Definition: brute_force_string_searching.cpp:13
+#define MAX
Definition: fibonacci_fast.cpp:27
+void show_data(T *arr, size_t LEN)
Definition: shell_sort2.cpp:18
+
+void heapSort(T *arr, int n)
Definition: heap_sort.cpp:84
+
+
+int main()
Definition: binomial_dist.cpp:84
+double addition_rule_dependent(double A, double B, double B_given_A)
Definition: addition_rule.cpp:25
+void test2()
Definition: smallest_circle.cpp:173
+
+
+
+double x
Definition: smallest_circle.cpp:16
+int main()
Definition: decimal_to_roman_numeral.cpp:90
+int sum_range(int l, int r)
Definition: fenwick_tree.cpp:65
+void test()
Definition: heap_sort.cpp:99
+#define absolutePrecision
Definition: ternary_search.cpp:22
+ll ans(ll n)
Definition: matrix_exponentiation.cpp:91
+Definition: fenwick_tree.cpp:17
+void print(uint32_t N)
Definition: sieve_of_eratosthenes.cpp:40
+#define HASHMAX
Determines the length of the hash table.
Definition: hash_search.cpp:22
+#define PRIME
Prime modulus for hash functions.
Definition: rabin_karp.cpp:16
+int partition(int arr[], int low, int high)
Definition: quick_sort.cpp:37
+
+Type * binary_s(Type *array, size_t size, Type key)
Definition: exponential_search.cpp:34
+Definition: avltree.cpp:13
+double y
Definition: smallest_circle.cpp:17
+
+
+int FindNextGap(int gap)
Definition: comb_sort.cpp:29
+#define MAX
Determines how much data.
Definition: hash_search.cpp:21
+int main()
Definition: pascal_triangle.cpp:52
+int main()
Definition: bayes_theorem.cpp:26
+
+vector< vector< ll > > multiply(const vector< vector< ll >> &A, const vector< vector< ll >> &B)
Definition: matrix_exponentiation.cpp:57
+void test2(const std::string &text)
Self test 2 - using 8x8 randomly generated key.
Definition: hill_cipher.cpp:505
+
+
+int main(void)
Definition: qr_decomposition.cpp:23
+int main()
Definition: palindrome_of_number.cpp:19
+Sorting algorithms.
Definition: non_recursive_merge_sort.cpp:11
+int main()
Definition: vector_important_functions.cpp:11
+
+void merge(Iterator, Iterator, const Iterator, char[])
merges 2 sorted adjacent segments into a larger sorted segment
Definition: non_recursive_merge_sort.cpp:57
+int main()
Definition: linear_search.cpp:27
+static float eqd(float y)
Definition: successive_approximation.cpp:17
+
+std::string fill(char c, int n)
Definition: decimal_to_roman_numeral.cpp:15
+void mat_mul(const std::valarray< std::valarray< double >> &A, const std::valarray< std::valarray< double >> &B, std::valarray< std::valarray< double >> *OUT)
Definition: qr_eigen_values.cpp:54
+int64_t create_hash(const std::string &s, int n)
Definition: rabin_karp.cpp:25
+
+int stack_idx
pointer to track stack index
Definition: paranthesis_matching.cpp:23
+int main(int argc, char *argv[])
Definition: shell_sort2.cpp:183
+int main()
Definition: interpolation_search2.cpp:32
+int compare(const void *a, const void *b)
Definition: shell_sort2.cpp:87
+int brute_force(const std::string &text, const std::string &pattern)
Definition: brute_force_string_searching.cpp:21
+int main()
Definition: buzz_number.cpp:9
+
+Functions to compute QR decomposition of any rectangular matrix.
+int offset(int x)
Definition: fenwick_tree.cpp:22
+void create_matrix(std::valarray< std::valarray< double >> *A)
Definition: qr_eigen_values.cpp:28
+int main()
Definition: happy_number.cpp:29
+
+int main()
Definition: text_search.cpp:15
+void show(int *arr, int size)
Definition: merge_sort.cpp:96
+const std::vector< std::vector< std::string > > test_set
Definition: brute_force_string_searching.cpp:41
+int rec_ternary_search(int left, int right, int A[], int target)
Definition: ternary_search.cpp:90
+Definition: linkedlist_implentation_usingarray.cpp:14
+
+int y
Point respect to x coordinate.
Definition: line_segment_intersection.cpp:14
+std::valarray< double > eigen_values(std::valarray< std::valarray< double >> *A, bool print_intermediates=false)
Definition: qr_eigen_values.cpp:98
+
+int64_t recalculate_hash(const std::string &s, int old_index, int new_index, int64_t old_hash, int patLength)
Definition: rabin_karp.cpp:42
+static const char * STRKEY
Definition: hill_cipher.cpp:73
+int main()
Definition: smallest_circle.cpp:198
+void test_int(const int NUM_DATA)
Definition: shell_sort2.cpp:105
+int ** pascal_triangle(int **arr, int n)
Definition: pascal_triangle.cpp:36
+int main()
Definition: hill_cipher.cpp:532
+void CombSort(int *arr, int l, int r)
Definition: comb_sort.cpp:42
+node * insert(node *root, int item)
Definition: avltree.cpp:66
+
+FenwickTree(const std::vector< int > &arr)
Definition: fenwick_tree.cpp:28
+void mergeSort(int *arr, int l, int r)
Definition: merge_sort.cpp:83
+int main()
Definition: matrix_exponentiation.cpp:126
+
+
+Library functions to compute QR decomposition of a given matrix.
+void merge(int *arr, int l, int m, int r)
Definition: merge_sort.cpp:33
+int h(int key)
Definition: hash_search.cpp:45
+
+void non_recursive_merge_sort(const Iterator first, const Iterator last)
bottom-up merge sort which sorts elements in a non-decreasing order
Definition: non_recursive_merge_sort.cpp:86
+void update(int id, int val)
Definition: fenwick_tree.cpp:45
+int main(int argc, char const *argv[])
Definition: binary_search.cpp:31
+Definition: tower_of_hanoi.cpp:11
+#define _target
Definition: ternary_search.cpp:27
+int binary_search(int a[], int r, int key)
Definition: binary_search.cpp:15
+char opening(char ch)
Definition: paranthesis_matching.cpp:36
+bool is_happy(T n)
Definition: happy_number.cpp:14
+
+bool check_if_equal(const std::string &str1, const std::string &str2, int start1, int end1, int start2, int end2)
Definition: rabin_karp.cpp:60
+
+int main()
Definition: ternary_search.cpp:134
+double binomial_range_successes(double n, double p, double lower_bound, double upper_bound)
Definition: binomial_dist.cpp:74
+double LenghtLine(const Point &A, const Point &B)
Definition: smallest_circle.cpp:37
+
+static const std::string encrypt_text(const std::string &text, const matrix< int > &encrypt_key)
Encrypt a given text using a given key.
Definition: hill_cipher.cpp:445
+
+static const std::string decrypt_text(const std::string &text, const matrix< int > &decrypt_key)
Decrypt a given text using a given key.
Definition: hill_cipher.cpp:457
+bool kmp(const std::string &pattern, const std::string &text)
Definition: knuth_morris_pratt.cpp:56
+double poisson_range_successes(double expected, double lower, double upper)
Definition: poisson_dist.cpp:54
+int main()
Definition: tower_of_hanoi.cpp:65
+void non_recursive_merge_sort(const Iterator first, const Iterator last, const size_t n)
bottom-up merge sort which sorts elements in a non-decreasing order
Definition: non_recursive_merge_sort.cpp:25
+#define ll
Definition: matrix_exponentiation.cpp:33
+
+
+double binomial_standard_deviation(double n, double p)
Definition: binomial_dist.cpp:36
+double TriangleArea(const Point &A, const Point &B, const Point &C)
Definition: smallest_circle.cpp:54
+int main()
Definition: brute_force_string_searching.cpp:47
+double binomial_x_successes(double n, double p, double x)
Definition: binomial_dist.cpp:65
+void test2()
Definition: qr_eigen_values.cpp:210
+
+#define endl
Definition: matrix_exponentiation.cpp:36
+struct list * link
pointer to nodes
+
+void spiralPrint(int **a, int r, int c)
Definition: spiral_print.cpp:29
+double bayes_BgivenA(double AgivenB, double A, double B)
Definition: bayes_theorem.cpp:20
+vector< ll > fib_b
Definition: matrix_exponentiation.cpp:50
+double poisson_rate(double events, double timeframe)
Definition: poisson_dist.cpp:17
+int key
key value for node
Definition: hash_search.cpp:30
+int main(int argc, char **argv)
Definition: qr_eigen_values.cpp:243
+
+double circle(const std::vector< Point > &P)
Definition: smallest_circle.cpp:87
+static float eq(float y)
Definition: successive_approximation.cpp:12
+Type * struzik_search(Type *array, size_t size, Type key)
Definition: exponential_search.cpp:59
+int main()
Definition: poisson_dist.cpp:65
+
+
+
+double binomial_expected(double n, double p)
Definition: binomial_dist.cpp:22
+int main()
Definition: heap_sort.cpp:120
+node hashtab[HASHMAX]
array of nodes
Definition: hash_search.cpp:35
+
+int it_ternary_search(int left, int right, int A[], int target)
Definition: ternary_search.cpp:48
+void test1(const std::string &text)
Self test 1 - using 3x3 randomly generated key.
Definition: hill_cipher.cpp:470
+static std::pair< matrix< int >, matrix< int > > generate_keys(size_t size, int limit1=0, int limit2=10)
Generate encryption and decryption key pair.
Definition: hill_cipher.cpp:424
+int jumpSearch(int arr[], int x, int n)
Definition: jump_search.cpp:12
+int data[MAX]
test data
Definition: hash_search.cpp:24
+void method1(int number)
Definition: decimal_to_binary.cpp:11
+void test1()
Definition: qr_eigen_values.cpp:177
+void printArray(T *arr, int sz)
Definition: heap_sort.cpp:37
+
+int main()
Definition: hash_search.cpp:99
+
+
+void create_list(int key)
Definition: hash_search.cpp:55
+double fact(double x)
Definition: poisson_dist.cpp:30
+
+
+
+
+double addition_rule_independent(double A, double B)
Definition: addition_rule.cpp:14
+void show(const struct tower *const F, const struct tower *const T, const struct tower *const U)
Definition: tower_of_hanoi.cpp:19
+int main()
Definition: sparse_matrix.cpp:9
+void test()
Definition: smallest_circle.cpp:158
+Definition: huffman.cpp:28
+int main()
Definition: spiral_print.cpp:69
+#define MAX
Definition: paranthesis_matching.cpp:16
+
+vector< vector< ll > > power(const vector< vector< ll >> &A, ll p)
Definition: matrix_exponentiation.cpp:76
+int main()
Definition: successive_approximation.cpp:20
+
+int LinearSearch(int *array, int size, int key)
Definition: linear_search.cpp:16
+
+bool IsPrime(int number)
Definition: primality_test.cpp:18
+double nCr(double n, double r)
Definition: binomial_dist.cpp:47
+int values[10]
Values in the tower.
Definition: tower_of_hanoi.cpp:13
+void qr_decompose(const std::valarray< std::valarray< T >> &A, std::valarray< std::valarray< T >> *Q, std::valarray< std::valarray< T >> *R)
Definition: qr_decompose.h:146
+void genArray(int **a, int r, int c)
Definition: spiral_print.cpp:12
+int main()
Definition: comb_sort.cpp:88
+int main()
Definition: interpolation_search.cpp:37
+std::string add(std::string a, std::string b)
Definition: string_fibonacci.cpp:24
+
+int main()
Definition: addition_rule.cpp:30
+std::string toupperRoman(int n)
Definition: decimal_to_roman_numeral.cpp:58
+#define LIMS
Definition: qr_eigen_values.cpp:20
+
+double bayes_AgivenB(double BgivenA, double A, double B)
Definition: bayes_theorem.cpp:14
+int sum(int id)
Definition: fenwick_tree.cpp:54
+
+int main()
Definition: quick_sort.cpp:82
+
+FenwickTree(int x)
Definition: fenwick_tree.cpp:39
+Point(double a=0.f, double b=0.f)
Definition: smallest_circle.cpp:23
+int main()
Definition: primality_test.cpp:31
+struct list * next
pointer to next link in the chain
Definition: hash_search.cpp:31
+int top
top tower ID
Definition: tower_of_hanoi.cpp:15
+Definition: line_segment_intersection.cpp:12
+void TH(int n, tower *From, tower *Using, tower *To)
Definition: tower_of_hanoi.cpp:52
+int interpolation_search(int arr[], int value, int len)
Definition: interpolation_search.cpp:15
+void push(char ch)
push byte to stack variable
Definition: paranthesis_matching.cpp:26
+int main()
Definition: merge_sort.cpp:102
+char pop()
pop a byte out of stack variable
Definition: paranthesis_matching.cpp:29
+int InterpolationSearch(int A[], int n, int x)
Definition: interpolation_search2.cpp:15
+
+double poisson_expected(double rate, double time)
Definition: poisson_dist.cpp:25
+double poisson_x_successes(double expected, double x)
Definition: poisson_dist.cpp:46
+int main(void)
Definition: rabin_karp.cpp:105
+void quickSort(int arr[], int low, int high)
Definition: quick_sort.cpp:63
+
+std::vector< int > getFailureArray(const std::string &pattern)
Definition: knuth_morris_pratt.cpp:33
+void show_pascal(int **arr, int n)
Definition: pascal_triangle.cpp:18
+int rabin_karp(const std::string &str, const std::string &pat)
Definition: rabin_karp.cpp:83
+void get_input()
Definition: ternary_search.cpp:36
+bool PointInCircle(const std::vector< Point > &P, const Point &Center, double R)
Definition: smallest_circle.cpp:72
+
+void tests()
Definition: comb_sort.cpp:73
+Definition: list_array.cpp:8
+
+double binomial_variance(double n, double p)
Definition: binomial_dist.cpp:29
+
+void shell_sort(std::vector< T > *arr)
Definition: shell_sort2.cpp:75
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp.js b/d7/db9/hill__cipher_8cpp.js
new file mode 100644
index 000000000..b52765a06
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp.js
@@ -0,0 +1,9 @@
+var hill__cipher_8cpp =
+[
+ [ "HillCipher", "d6/d26/classciphers_1_1_hill_cipher.html", "d6/d26/classciphers_1_1_hill_cipher" ],
+ [ "main", "d7/db9/hill__cipher_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
+ [ "operator<<", "d7/db9/hill__cipher_8cpp.html#aeff09ac6b8f060c828354394a3189519", null ],
+ [ "test1", "d7/db9/hill__cipher_8cpp.html#a3147ad576f8a94a2a6b66948672b452b", null ],
+ [ "test2", "d7/db9/hill__cipher_8cpp.html#a04391124480d2a49f2dec900237b0712", null ],
+ [ "STRKEY", "d7/db9/hill__cipher_8cpp.html#ab9aec0ccf4b6809f652bb540be87c216", null ]
+];
\ No newline at end of file
diff --git a/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.map b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.map
new file mode 100644
index 000000000..761b91d6d
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.map
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.md5 b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.md5
new file mode 100644
index 000000000..0ba494811
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.md5
@@ -0,0 +1 @@
+3a02a91d1033a360ffc54da6154b006a
\ No newline at end of file
diff --git a/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.svg b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.svg
new file mode 100644
index 000000000..524fb4302
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph.svg
@@ -0,0 +1,573 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test2
+
+
+
+Node1
+
+
+test2
+
+
+
+
+
+Node2
+
+
+std::ofstream::close
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::string::compare
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+ciphers::HillCipher
+::decrypt_text
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node8
+
+
+std::string::length
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node10
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+ciphers::HillCipher
+::encrypt_text
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+std::endl
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node13
+
+
+ciphers::HillCipher
+::generate_keys
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node5
+
+
+ciphers::HillCipher
+::codec
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+ciphers::HillCipher
+::get_char_idx
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node5->Node8
+
+
+
+
+
+Node9
+
+
+ciphers::HillCipher
+::mat_mul
+
+
+
+
+
+Node5->Node9
+
+
+
+
+
+Node5->Node10
+
+
+
+
+
+Node7
+
+
+std::strlen
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node9->Node7
+
+
+
+
+
+Node9->Node10
+
+
+
+
+
+Node11->Node5
+
+
+
+
+
+Node14
+
+
+determinant_lu
+
+
+
+
+
+Node13->Node14
+
+
+
+
+
+Node16
+
+
+ciphers::HillCipher
+::generate_decryption_key
+
+
+
+
+
+Node13->Node16
+
+
+
+
+
+Node20
+
+
+ciphers::HillCipher
+::generate_encryption_key
+
+
+
+
+
+Node13->Node20
+
+
+
+
+
+Node26
+
+
+std::make_pair
+
+
+
+
+
+Node13->Node26
+
+
+
+
+
+Node14->Node10
+
+
+
+
+
+Node15
+
+
+lu_decomposition
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node15->Node10
+
+
+
+
+
+Node16->Node7
+
+
+
+
+
+Node16->Node10
+
+
+
+
+
+Node16->Node14
+
+
+
+
+
+Node17
+
+
+std::exit
+
+
+
+
+
+Node16->Node17
+
+
+
+
+
+Node18
+
+
+ciphers::HillCipher
+::get_inverse
+
+
+
+
+
+Node16->Node18
+
+
+
+
+
+Node19
+
+
+std::round
+
+
+
+
+
+Node16->Node19
+
+
+
+
+
+Node18->Node10
+
+
+
+
+
+Node18->Node12
+
+
+
+
+
+Node20->Node7
+
+
+
+
+
+Node21
+
+
+ciphers::HillCipher::gcd
+
+
+
+
+
+Node20->Node21
+
+
+
+
+
+Node23
+
+
+std::isfinite
+
+
+
+
+
+Node20->Node23
+
+
+
+
+
+Node24
+
+
+ciphers::HillCipher
+::rand_range
+
+
+
+
+
+Node20->Node24
+
+
+
+
+
+Node22
+
+
+std::swap
+
+
+
+
+
+Node21->Node22
+
+
+
+
+
+Node25
+
+
+std::rand
+
+
+
+
+
+Node24->Node25
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph_org.svg b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph_org.svg
new file mode 100644
index 000000000..28ca61301
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a04391124480d2a49f2dec900237b0712_cgraph_org.svg
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+test2
+
+
+
+Node1
+
+
+test2
+
+
+
+
+
+Node2
+
+
+std::ofstream::close
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::string::compare
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+ciphers::HillCipher
+::decrypt_text
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node8
+
+
+std::string::length
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node10
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+ciphers::HillCipher
+::encrypt_text
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+std::endl
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node13
+
+
+ciphers::HillCipher
+::generate_keys
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node5
+
+
+ciphers::HillCipher
+::codec
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+ciphers::HillCipher
+::get_char_idx
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node5->Node8
+
+
+
+
+
+Node9
+
+
+ciphers::HillCipher
+::mat_mul
+
+
+
+
+
+Node5->Node9
+
+
+
+
+
+Node5->Node10
+
+
+
+
+
+Node7
+
+
+std::strlen
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node9->Node7
+
+
+
+
+
+Node9->Node10
+
+
+
+
+
+Node11->Node5
+
+
+
+
+
+Node14
+
+
+determinant_lu
+
+
+
+
+
+Node13->Node14
+
+
+
+
+
+Node16
+
+
+ciphers::HillCipher
+::generate_decryption_key
+
+
+
+
+
+Node13->Node16
+
+
+
+
+
+Node20
+
+
+ciphers::HillCipher
+::generate_encryption_key
+
+
+
+
+
+Node13->Node20
+
+
+
+
+
+Node26
+
+
+std::make_pair
+
+
+
+
+
+Node13->Node26
+
+
+
+
+
+Node14->Node10
+
+
+
+
+
+Node15
+
+
+lu_decomposition
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node15->Node10
+
+
+
+
+
+Node16->Node7
+
+
+
+
+
+Node16->Node10
+
+
+
+
+
+Node16->Node14
+
+
+
+
+
+Node17
+
+
+std::exit
+
+
+
+
+
+Node16->Node17
+
+
+
+
+
+Node18
+
+
+ciphers::HillCipher
+::get_inverse
+
+
+
+
+
+Node16->Node18
+
+
+
+
+
+Node19
+
+
+std::round
+
+
+
+
+
+Node16->Node19
+
+
+
+
+
+Node18->Node10
+
+
+
+
+
+Node18->Node12
+
+
+
+
+
+Node20->Node7
+
+
+
+
+
+Node21
+
+
+ciphers::HillCipher::gcd
+
+
+
+
+
+Node20->Node21
+
+
+
+
+
+Node23
+
+
+std::isfinite
+
+
+
+
+
+Node20->Node23
+
+
+
+
+
+Node24
+
+
+ciphers::HillCipher
+::rand_range
+
+
+
+
+
+Node20->Node24
+
+
+
+
+
+Node22
+
+
+std::swap
+
+
+
+
+
+Node21->Node22
+
+
+
+
+
+Node25
+
+
+std::rand
+
+
+
+
+
+Node24->Node25
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.map b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.map
new file mode 100644
index 000000000..bd11c7396
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.map
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.md5 b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.md5
new file mode 100644
index 000000000..97c1cfe23
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.md5
@@ -0,0 +1 @@
+8f9dd8ce391293fefd1587b05d3daf05
\ No newline at end of file
diff --git a/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.svg b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.svg
new file mode 100644
index 000000000..9b47ceb60
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph.svg
@@ -0,0 +1,552 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test1
+
+
+
+Node1
+
+
+test1
+
+
+
+
+
+Node2
+
+
+std::ofstream::close
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+ciphers::HillCipher
+::decrypt_text
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node9
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node10
+
+
+ciphers::HillCipher
+::encrypt_text
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+std::endl
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+ciphers::HillCipher
+::generate_keys
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node4
+
+
+ciphers::HillCipher
+::codec
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+ciphers::HillCipher
+::get_char_idx
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node7
+
+
+std::string::length
+
+
+
+
+
+Node4->Node7
+
+
+
+
+
+Node8
+
+
+ciphers::HillCipher
+::mat_mul
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node4->Node9
+
+
+
+
+
+Node6
+
+
+std::strlen
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node8->Node6
+
+
+
+
+
+Node8->Node9
+
+
+
+
+
+Node10->Node4
+
+
+
+
+
+Node13
+
+
+determinant_lu
+
+
+
+
+
+Node12->Node13
+
+
+
+
+
+Node15
+
+
+ciphers::HillCipher
+::generate_decryption_key
+
+
+
+
+
+Node12->Node15
+
+
+
+
+
+Node19
+
+
+ciphers::HillCipher
+::generate_encryption_key
+
+
+
+
+
+Node12->Node19
+
+
+
+
+
+Node25
+
+
+std::make_pair
+
+
+
+
+
+Node12->Node25
+
+
+
+
+
+Node13->Node9
+
+
+
+
+
+Node14
+
+
+lu_decomposition
+
+
+
+
+
+Node13->Node14
+
+
+
+
+
+Node14->Node9
+
+
+
+
+
+Node15->Node6
+
+
+
+
+
+Node15->Node9
+
+
+
+
+
+Node15->Node13
+
+
+
+
+
+Node16
+
+
+std::exit
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node17
+
+
+ciphers::HillCipher
+::get_inverse
+
+
+
+
+
+Node15->Node17
+
+
+
+
+
+Node18
+
+
+std::round
+
+
+
+
+
+Node15->Node18
+
+
+
+
+
+Node17->Node9
+
+
+
+
+
+Node17->Node11
+
+
+
+
+
+Node19->Node6
+
+
+
+
+
+Node20
+
+
+ciphers::HillCipher::gcd
+
+
+
+
+
+Node19->Node20
+
+
+
+
+
+Node22
+
+
+std::isfinite
+
+
+
+
+
+Node19->Node22
+
+
+
+
+
+Node23
+
+
+ciphers::HillCipher
+::rand_range
+
+
+
+
+
+Node19->Node23
+
+
+
+
+
+Node21
+
+
+std::swap
+
+
+
+
+
+Node20->Node21
+
+
+
+
+
+Node24
+
+
+std::rand
+
+
+
+
+
+Node23->Node24
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph_org.svg b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph_org.svg
new file mode 100644
index 000000000..3bfbfd8e6
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_a3147ad576f8a94a2a6b66948672b452b_cgraph_org.svg
@@ -0,0 +1,464 @@
+
+
+
+
+
+
+test1
+
+
+
+Node1
+
+
+test1
+
+
+
+
+
+Node2
+
+
+std::ofstream::close
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+ciphers::HillCipher
+::decrypt_text
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node9
+
+
+std::vector::size
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node10
+
+
+ciphers::HillCipher
+::encrypt_text
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+std::endl
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+ciphers::HillCipher
+::generate_keys
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node4
+
+
+ciphers::HillCipher
+::codec
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+ciphers::HillCipher
+::get_char_idx
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node7
+
+
+std::string::length
+
+
+
+
+
+Node4->Node7
+
+
+
+
+
+Node8
+
+
+ciphers::HillCipher
+::mat_mul
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node4->Node9
+
+
+
+
+
+Node6
+
+
+std::strlen
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node8->Node6
+
+
+
+
+
+Node8->Node9
+
+
+
+
+
+Node10->Node4
+
+
+
+
+
+Node13
+
+
+determinant_lu
+
+
+
+
+
+Node12->Node13
+
+
+
+
+
+Node15
+
+
+ciphers::HillCipher
+::generate_decryption_key
+
+
+
+
+
+Node12->Node15
+
+
+
+
+
+Node19
+
+
+ciphers::HillCipher
+::generate_encryption_key
+
+
+
+
+
+Node12->Node19
+
+
+
+
+
+Node25
+
+
+std::make_pair
+
+
+
+
+
+Node12->Node25
+
+
+
+
+
+Node13->Node9
+
+
+
+
+
+Node14
+
+
+lu_decomposition
+
+
+
+
+
+Node13->Node14
+
+
+
+
+
+Node14->Node9
+
+
+
+
+
+Node15->Node6
+
+
+
+
+
+Node15->Node9
+
+
+
+
+
+Node15->Node13
+
+
+
+
+
+Node16
+
+
+std::exit
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node17
+
+
+ciphers::HillCipher
+::get_inverse
+
+
+
+
+
+Node15->Node17
+
+
+
+
+
+Node18
+
+
+std::round
+
+
+
+
+
+Node15->Node18
+
+
+
+
+
+Node17->Node9
+
+
+
+
+
+Node17->Node11
+
+
+
+
+
+Node19->Node6
+
+
+
+
+
+Node20
+
+
+ciphers::HillCipher::gcd
+
+
+
+
+
+Node19->Node20
+
+
+
+
+
+Node22
+
+
+std::isfinite
+
+
+
+
+
+Node19->Node22
+
+
+
+
+
+Node23
+
+
+ciphers::HillCipher
+::rand_range
+
+
+
+
+
+Node19->Node23
+
+
+
+
+
+Node21
+
+
+std::swap
+
+
+
+
+
+Node20->Node21
+
+
+
+
+
+Node24
+
+
+std::rand
+
+
+
+
+
+Node23->Node24
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map
new file mode 100644
index 000000000..b3a5c7d13
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.map
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5 b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5
new file mode 100644
index 000000000..962dc9f84
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.md5
@@ -0,0 +1 @@
+81d7566d0b642c0502da0173e8e9e615
\ No newline at end of file
diff --git a/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg
new file mode 100644
index 000000000..83d59c2b8
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg
@@ -0,0 +1,675 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+main
+
+
+
+Node1
+
+
+main
+
+
+
+
+
+Node2
+
+
+std::srand
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::strlen
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+test1
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node28
+
+
+test2
+
+
+
+
+
+Node1->Node28
+
+
+
+
+
+Node30
+
+
+std::time
+
+
+
+
+
+Node1->Node30
+
+
+
+
+
+Node5
+
+
+std::ofstream::close
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+ciphers::HillCipher
+::decrypt_text
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node11
+
+
+std::vector::size
+
+
+
+
+
+Node4->Node11
+
+
+
+
+
+Node12
+
+
+ciphers::HillCipher
+::encrypt_text
+
+
+
+
+
+Node4->Node12
+
+
+
+
+
+Node13
+
+
+std::endl
+
+
+
+
+
+Node4->Node13
+
+
+
+
+
+Node14
+
+
+ciphers::HillCipher
+::generate_keys
+
+
+
+
+
+Node4->Node14
+
+
+
+
+
+Node7
+
+
+ciphers::HillCipher
+::codec
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8
+
+
+ciphers::HillCipher
+::get_char_idx
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node9
+
+
+std::string::length
+
+
+
+
+
+Node7->Node9
+
+
+
+
+
+Node10
+
+
+ciphers::HillCipher
+::mat_mul
+
+
+
+
+
+Node7->Node10
+
+
+
+
+
+Node7->Node11
+
+
+
+
+
+Node8->Node3
+
+
+
+
+
+Node10->Node3
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12->Node7
+
+
+
+
+
+Node15
+
+
+determinant_lu
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node17
+
+
+ciphers::HillCipher
+::generate_decryption_key
+
+
+
+
+
+Node14->Node17
+
+
+
+
+
+Node21
+
+
+ciphers::HillCipher
+::generate_encryption_key
+
+
+
+
+
+Node14->Node21
+
+
+
+
+
+Node27
+
+
+std::make_pair
+
+
+
+
+
+Node14->Node27
+
+
+
+
+
+Node15->Node11
+
+
+
+
+
+Node16
+
+
+lu_decomposition
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node16->Node11
+
+
+
+
+
+Node17->Node3
+
+
+
+
+
+Node17->Node11
+
+
+
+
+
+Node17->Node15
+
+
+
+
+
+Node18
+
+
+std::exit
+
+
+
+
+
+Node17->Node18
+
+
+
+
+
+Node19
+
+
+ciphers::HillCipher
+::get_inverse
+
+
+
+
+
+Node17->Node19
+
+
+
+
+
+Node20
+
+
+std::round
+
+
+
+
+
+Node17->Node20
+
+
+
+
+
+Node19->Node11
+
+
+
+
+
+Node19->Node13
+
+
+
+
+
+Node21->Node3
+
+
+
+
+
+Node22
+
+
+ciphers::HillCipher::gcd
+
+
+
+
+
+Node21->Node22
+
+
+
+
+
+Node24
+
+
+std::isfinite
+
+
+
+
+
+Node21->Node24
+
+
+
+
+
+Node25
+
+
+ciphers::HillCipher
+::rand_range
+
+
+
+
+
+Node21->Node25
+
+
+
+
+
+Node23
+
+
+std::swap
+
+
+
+
+
+Node22->Node23
+
+
+
+
+
+Node26
+
+
+std::rand
+
+
+
+
+
+Node25->Node26
+
+
+
+
+
+Node28->Node5
+
+
+
+
+
+Node28->Node6
+
+
+
+
+
+Node28->Node9
+
+
+
+
+
+Node28->Node11
+
+
+
+
+
+Node28->Node12
+
+
+
+
+
+Node28->Node13
+
+
+
+
+
+Node28->Node14
+
+
+
+
+
+Node29
+
+
+std::string::compare
+
+
+
+
+
+Node28->Node29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg
new file mode 100644
index 000000000..d208c2037
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph_org.svg
@@ -0,0 +1,587 @@
+
+
+
+
+
+
+main
+
+
+
+Node1
+
+
+main
+
+
+
+
+
+Node2
+
+
+std::srand
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::strlen
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+test1
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node28
+
+
+test2
+
+
+
+
+
+Node1->Node28
+
+
+
+
+
+Node30
+
+
+std::time
+
+
+
+
+
+Node1->Node30
+
+
+
+
+
+Node5
+
+
+std::ofstream::close
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+ciphers::HillCipher
+::decrypt_text
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node11
+
+
+std::vector::size
+
+
+
+
+
+Node4->Node11
+
+
+
+
+
+Node12
+
+
+ciphers::HillCipher
+::encrypt_text
+
+
+
+
+
+Node4->Node12
+
+
+
+
+
+Node13
+
+
+std::endl
+
+
+
+
+
+Node4->Node13
+
+
+
+
+
+Node14
+
+
+ciphers::HillCipher
+::generate_keys
+
+
+
+
+
+Node4->Node14
+
+
+
+
+
+Node7
+
+
+ciphers::HillCipher
+::codec
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8
+
+
+ciphers::HillCipher
+::get_char_idx
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node9
+
+
+std::string::length
+
+
+
+
+
+Node7->Node9
+
+
+
+
+
+Node10
+
+
+ciphers::HillCipher
+::mat_mul
+
+
+
+
+
+Node7->Node10
+
+
+
+
+
+Node7->Node11
+
+
+
+
+
+Node8->Node3
+
+
+
+
+
+Node10->Node3
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12->Node7
+
+
+
+
+
+Node15
+
+
+determinant_lu
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node17
+
+
+ciphers::HillCipher
+::generate_decryption_key
+
+
+
+
+
+Node14->Node17
+
+
+
+
+
+Node21
+
+
+ciphers::HillCipher
+::generate_encryption_key
+
+
+
+
+
+Node14->Node21
+
+
+
+
+
+Node27
+
+
+std::make_pair
+
+
+
+
+
+Node14->Node27
+
+
+
+
+
+Node15->Node11
+
+
+
+
+
+Node16
+
+
+lu_decomposition
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node16->Node11
+
+
+
+
+
+Node17->Node3
+
+
+
+
+
+Node17->Node11
+
+
+
+
+
+Node17->Node15
+
+
+
+
+
+Node18
+
+
+std::exit
+
+
+
+
+
+Node17->Node18
+
+
+
+
+
+Node19
+
+
+ciphers::HillCipher
+::get_inverse
+
+
+
+
+
+Node17->Node19
+
+
+
+
+
+Node20
+
+
+std::round
+
+
+
+
+
+Node17->Node20
+
+
+
+
+
+Node19->Node11
+
+
+
+
+
+Node19->Node13
+
+
+
+
+
+Node21->Node3
+
+
+
+
+
+Node22
+
+
+ciphers::HillCipher::gcd
+
+
+
+
+
+Node21->Node22
+
+
+
+
+
+Node24
+
+
+std::isfinite
+
+
+
+
+
+Node21->Node24
+
+
+
+
+
+Node25
+
+
+ciphers::HillCipher
+::rand_range
+
+
+
+
+
+Node21->Node25
+
+
+
+
+
+Node23
+
+
+std::swap
+
+
+
+
+
+Node22->Node23
+
+
+
+
+
+Node26
+
+
+std::rand
+
+
+
+
+
+Node25->Node26
+
+
+
+
+
+Node28->Node5
+
+
+
+
+
+Node28->Node6
+
+
+
+
+
+Node28->Node9
+
+
+
+
+
+Node28->Node11
+
+
+
+
+
+Node28->Node12
+
+
+
+
+
+Node28->Node13
+
+
+
+
+
+Node28->Node14
+
+
+
+
+
+Node29
+
+
+std::string::compare
+
+
+
+
+
+Node28->Node29
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.map b/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.map
new file mode 100644
index 000000000..2a9da2751
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.md5 b/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.md5
new file mode 100644
index 000000000..88ef5c979
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.md5
@@ -0,0 +1 @@
+54e66f6e545d0faf1069c1cc73397c39
\ No newline at end of file
diff --git a/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.svg b/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.svg
new file mode 100644
index 000000000..05f913712
--- /dev/null
+++ b/d7/db9/hill__cipher_8cpp_aeff09ac6b8f060c828354394a3189519_cgraph.svg
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+operator<<
+
+
+
+Node1
+
+
+operator<<
+
+
+
+
+
+Node2
+
+
+std::endl
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+std::left
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+std::setfill
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node5
+
+
+std::setw
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
diff --git a/d7/dba/cll_8h_source.html b/d7/dba/cll_8h_source.html
index 3d7b44653..0274d3b68 100644
--- a/d7/dba/cll_8h_source.html
+++ b/d7/dba/cll_8h_source.html
@@ -140,7 +140,15 @@ $(document).ready(function(){initNavTree('d7/dba/cll_8h_source.html','../../');
void mov(tower *From, tower *To)
Definition: tower_of_hanoi.cpp:39
+
+static char get_idx_char(const uint8_t idx)
Get the character at a given index in the STRKEY.
Definition: hill_cipher.cpp:182
+static const std::string codec(const std::string &text, const matrix< int > &key)
Convenience function to perform block cipher operations. The operations are identical for both encryp...
Definition: hill_cipher.cpp:210
+
+
+static matrix< int > generate_encryption_key(size_t size, int limit1=0, int limit2=10)
Generate encryption matrix of a given size. Larger size matrices are difficult to generate but provid...
Definition: hill_cipher.cpp:339
+
+Implementation of Hill Cipher algorithm.
Definition: hill_cipher.cpp:81
node * deleteNode(node *root, int key)
Definition: avltree.cpp:88
@@ -149,38 +157,68 @@ $(document).ready(function(){initNavTree('d7/dba/cll_8h_source.html','../../');
int heap_size
Current number of elements in min heap.
Definition: binaryheap.cpp:13
Definition: avltree.cpp:13
+void test2(const std::string &text)
Self test 2 - using 8x8 randomly generated key.
Definition: hill_cipher.cpp:505
+
void decreaseKey(int i, int new_val)
Definition: binaryheap.cpp:76
void levelOrder(node *root)
Definition: avltree.cpp:119
+Algorithms for encryption and decryption.
+static const char * STRKEY
Definition: hill_cipher.cpp:73
+static const T gcd(T a, T b)
Compute GCD of two integers using Euler's algorithm.
Definition: hill_cipher.cpp:138
void insertKey(int k)
Definition: binaryheap.cpp:55
node * createNode(int data)
Definition: avltree.cpp:21
+int main()
Definition: hill_cipher.cpp:532
+
int capacity
maximum possible size of min heap
Definition: binaryheap.cpp:12
node * insert(node *root, int item)
Definition: avltree.cpp:66
+static matrix< double > get_inverse(matrix< T > const &A)
Definition: hill_cipher.cpp:250
+static matrix< int > generate_decryption_key(matrix< int > const &encrypt_key)
Generate decryption matrix from an encryption matrix key.
Definition: hill_cipher.cpp:371
int h(int key)
Definition: hash_search.cpp:45
+
int * harr
pointer to array of elements in heap
Definition: binaryheap.cpp:11
+
+static const std::string encrypt_text(const std::string &text, const matrix< int > &encrypt_key)
Encrypt a given text using a given key.
Definition: hill_cipher.cpp:445
+static const std::string decrypt_text(const std::string &text, const matrix< int > &decrypt_key)
Decrypt a given text using a given key.
Definition: hill_cipher.cpp:457
+
void MinHeapify(int)
Definition: binaryheap.cpp:113
+
int height(node *root)
Definition: avltree.cpp:31
node * rightRotate(node *root)
Definition: avltree.cpp:41
+static uint8_t get_char_idx(const char ch)
Get the index of a character in the STRKEY.
Definition: hill_cipher.cpp:190
#define endl
Definition: matrix_exponentiation.cpp:36
int left(int i)
Definition: binaryheap.cpp:31
+
+void test1(const std::string &text)
Self test 1 - using 3x3 randomly generated key.
Definition: hill_cipher.cpp:470
+static std::pair< matrix< int >, matrix< int > > generate_keys(size_t size, int limit1=0, int limit2=10)
Generate encryption and decryption key pair.
Definition: hill_cipher.cpp:424
int data[MAX]
test data
Definition: hash_search.cpp:24
node * minValue(node *root)
Definition: avltree.cpp:59
+static double rand_range(matrix< T2 > *M, T1 a, T1 b)
Function overload to fill a matrix with random integers in a given interval.
Definition: hill_cipher.cpp:118
+
Kind front()
Definition: queue.h:61
+
MinHeap(int cap)
Definition: binaryheap.cpp:19
int main()
Definition: avltree.cpp:134
+double determinant_lu(const matrix< T > &A)
Definition: lu_decomposition.h:90
+static const T2 rand_range(T1 a, T1 b)
Function to generate a random integer in a given interval.
Definition: hill_cipher.cpp:92
+static std::ostream & operator<<(std::ostream &out, matrix< T > const &v)
Definition: hill_cipher.cpp:54
+
+
+
node * leftRotate(node *root)
Definition: avltree.cpp:50
+static const std::valarray< uint8_t > mat_mul(const std::valarray< uint8_t > &vector, const matrix< int > &key)
helper function to perform vector multiplication with encryption or decryption matrix
Definition: hill_cipher.cpp:159
int getMin()
Definition: binaryheap.cpp:43
+
int getBalance(node *root)
Definition: avltree.cpp:38
Definition: binary_search_tree.cpp:17
int extractMin()
Definition: binaryheap.cpp:85
diff --git a/d7/de0/stack_8h_source.html b/d7/de0/stack_8h_source.html
index 31f040dfc..3448fc219 100644
--- a/d7/de0/stack_8h_source.html
+++ b/d7/de0/stack_8h_source.html
@@ -251,6 +251,7 @@ $(document).ready(function(){initNavTree('d7/de0/stack_8h_source.html','../../')
Definition: avltree.cpp:13
+int main()
Definition: hill_cipher.cpp:532
Definition: queue_using_linkedlist.cpp:10
Definition: queue_using_linkedlist.cpp:6
@@ -264,7 +265,6 @@ $(document).ready(function(){initNavTree('d7/de0/stack_8h_source.html','../../')
stack< Type > & operator=(const stack< Type > &otherStack)
Definition: stack.h:115
void show(const struct tower *const F, const struct tower *const T, const struct tower *const U)
Definition: tower_of_hanoi.cpp:19
-int main()
Definition: avltree.cpp:134
Definition: queue_using_array.cpp:13
void display()
Definition: stack.h:29
diff --git a/d8/d38/queue_8h_source.html b/d8/d38/queue_8h_source.html
index 0eae6d8d6..05977a607 100644
--- a/d8/d38/queue_8h_source.html
+++ b/d8/d38/queue_8h_source.html
@@ -200,6 +200,7 @@ $(document).ready(function(){initNavTree('d8/d38/queue_8h_source.html','../../')
Definition: linkedlist_implentation_usingarray.cpp:14
void enQueue(Kind item)
Definition: queue.h:45
bool isEmptyQueue()
Definition: queue.h:42
+int main()
Definition: hill_cipher.cpp:532
void clear()
Definition: queue.h:80
node * insert(node *root, int item)
Definition: avltree.cpp:66
@@ -217,7 +218,6 @@ $(document).ready(function(){initNavTree('d8/d38/queue_8h_source.html','../../')
void show(const struct tower *const F, const struct tower *const T, const struct tower *const U)
Definition: tower_of_hanoi.cpp:19
-int main()
Definition: avltree.cpp:134
void freeNode(int nodeToBeDeleted)
Definition: linkedlist_implentation_usingarray.cpp:42
void Union(int x, int y)
Definition: disjoint_set.cpp:78
diff --git a/d8/dee/avltree_8cpp.html b/d8/dee/avltree_8cpp.html
index 53966997e..47683159f 100644
--- a/d8/dee/avltree_8cpp.html
+++ b/d8/dee/avltree_8cpp.html
@@ -147,7 +147,7 @@ Functions