h_encrypt 0.2.3

A simple encrpytion/decryption library.
Documentation
use crate::table::{Table, RANDOM_TABLES, utils::{apply_higher_order, compose_tables}};
use crate::hash::hash_string;

pub fn gen_tables(password: &[u8], bytes_hash: &Vec<usize>) -> Vec<Vec<Table>> {
    let hashes: Vec<usize> = hash_string(password);
    let mut seeds = RANDOM_TABLES.to_vec();

    for i in hashes.into_iter() {
        let new_tables = apply_higher_order(&RANDOM_TABLES, &RANDOM_TABLES[i]);
        seeds = compose_tables(&seeds, &new_tables);
    }

    for i in bytes_hash.iter() {
        let new_tables = apply_higher_order(&RANDOM_TABLES, &RANDOM_TABLES[*i]);
        seeds = compose_tables(&seeds, &new_tables);
    }

    vec![
        seeds[0..83].to_vec(),
        seeds[83..168].to_vec(),
        seeds[168..=255].to_vec()
    ]
}

pub fn get_suffix_and_prefix_length(tables: &Vec<Vec<Table>>) -> (usize, usize) {
    (
        tables[0][0].0[0] as usize + tables[0][0].0[1] as usize,
        tables[0][0].0[2] as usize + tables[0][0].0[3] as usize
    )
}