예제 #1
0
        private byte[] ChangeToBaseAlphabet(byte[] cyphertext, ReplacementSchemaType schema)
        {
            List <uint8_t> current_char_list = new List <uint8_t>();

            foreach (uint8_t character in cyphertext)
            {
                uint8_t replacedChar = schema.SchemaSet.Where(x => x.Item2 == character).Select(x => x.Item1).FirstOrDefault(); //LINQ have to rethink
                current_char_list.Add(replacedChar);
            }
            return(current_char_list.ToArray());
        }
예제 #2
0
        /// <summary>
        /// Allows for the initial change from regular english alphabet to a database changed alphabet
        /// Mimic FPGA order since the program on an verilog cant just use LINQ operations
        /// </summary>
        /// <param name="plaintext"></param>
        /// <param name="SchemaId"></param>
        /// <returns></returns>
        private byte[] ChangeWordToNewAlphabet(byte[] plaintext, ReplacementSchemaType schema)
        {
            List <uint8_t> current_char_list = new List <uint8_t>();

            //same as for int i and number of chars in word unless we are going from stream
            //in which case a stream would have to be performed on using binary operations here
            foreach (uint8_t character in plaintext)
            {
                uint8_t replacedChar = schema.SchemaSet.Where(x => x.Item1 == character).Select(x => x.Item2).FirstOrDefault(); //LINQ have to rethink
                current_char_list.Add(replacedChar);
            }
            return(current_char_list.ToArray());
        }
예제 #3
0
        public CharReplacedText CharacterReplaceCyphertext(ReplacedMessage cyphertext)
        {
            //after decryption
            //List<byte> new_string = new List<byte>();
            ReplacementSchemaType schema         = GetSchema(cyphertext.SchemaId);
            CharReplacedText      replaced_text  = new CharReplacedText(schema.SchemaId);
            List <uint8_t>        combine_blocks = new List <uint8_t>();

            ///CHANGE TO USING BYTE[]
            foreach (CharReplacedText replacedText in cyphertext.replacedTexts)
            {
                byte[] char_replaced_string = ChangeToBaseAlphabet(replacedText.Text, schema);
                combine_blocks.AddRange(char_replaced_string.ToList());
            }
            //new_string = encode_set.GetBytes(sr.ToString()).ToList();
            replaced_text.Text = combine_blocks.ToArray();
            return(replaced_text);
        }
예제 #4
0
        public ReplacedMessage CharacterReplacePlaintext(CharReplacedText plaintext)
        {
            //before encryption
            ReplacementSchemaType schema = GetSchema(plaintext.SchemaId);
            //string plaintext_str = encode_set.GetString(plaintext.Text);
            List <byte[]>   split_strings           = SplitChunks(plaintext.Text).ToList();
            ReplacedMessage return_replaced_message = new ReplacedMessage(schema.SchemaId);
            int             i = 0;

            foreach (byte[] chunk in split_strings)
            {
                byte[]           char_replaced_string = ChangeWordToNewAlphabet(chunk, schema);
                CharReplacedText replaced_text        = new CharReplacedText(schema.SchemaId);
                replaced_text.Text         = char_replaced_string;
                replaced_text.TextPosition = i;
                return_replaced_message.replacedTexts.Add(replaced_text);
                i++;
            }
            return(return_replaced_message);
        }