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()); }
/// <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()); }
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); }
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); }