private static void Decrypt(AESMessage cyphertext) { //get the details for the newly created message //padding and char replacement ReplacedMessage decrypted_text = new ReplacedMessage(cyphertext.SchemaId); List <CharReplacedText> decrypt_these_blocks = schemaManager.SplitChunks(cyphertext.UserText, decrypted_text.SchemaId).ToList(); byte[] userkey = cyphertext.UserKey; //send to uart //receive from uart foreach (CharReplacedText byte_block in decrypt_these_blocks) { List <byte> dec_rslt = SendDecryptInstruction(byte_block.Text, userkey).ToList(); CharReplacedText decrypted_block = new CharReplacedText(decrypted_text.SchemaId); decrypted_block.TextPosition = byte_block.TextPosition; decrypted_block.Text = dec_rslt.ToArray(); decrypted_text.replacedTexts.Add(decrypted_block); } CharReplacedText replacedMessage = schemaManager.CharacterReplaceCyphertext(decrypted_text); //create return message AESMessage decrypt_result = new AESMessage(); decrypt_result.MessageType = (int)MAES_INSTRUCTION.DECRYPTRESULT; decrypt_result.SchemaId = replacedMessage.SchemaId; decrypt_result.ServerText = replacedMessage.Text; //send message back to the device it came from SendAESMessage(decrypt_result); }
private static void Encrypt(AESMessage plaintext) { //get the details for the newly created message //padding and char replacement CharReplacedText charReplacedText = new CharReplacedText(plaintext.SchemaId); charReplacedText.Text = plaintext.UserText; ReplacedMessage full_message = schemaManager.CharacterReplacePlaintext(charReplacedText); byte[] userkey = plaintext.UserKey; List <byte> encryption_result = new List <byte>(); //send to uart //receive from uart foreach (CharReplacedText byte_block in full_message.replacedTexts) { List <byte> enc_rslt = SendEncryptInstruction(byte_block.Text, userkey).ToList(); encryption_result.AddRange(enc_rslt); } //create return message AESMessage encrypt_result = new AESMessage(); encrypt_result.MessageType = (int)MAES_INSTRUCTION.ENCRYPTRESULT; encrypt_result.SchemaId = full_message.SchemaId; encrypt_result.ServerText = encryption_result.ToArray(); //send message back to the device it came from SendAESMessage(encrypt_result); }
public void ReplaceCyphertextTest() { string file_text = GetFileStringContent(broken_json_filepath); ReplacedMessage message_from_text = ParseJson <ReplacedMessage>(file_text, false); CharReplacedText back_to_normal = m_schema.CharacterReplaceCyphertext(message_from_text); //string replace_text_compare = Encoding.ASCII.GetString(ssad.Text); //432 115 116 //432 101 115 116 CollectionAssert.AreEqual(Encoding.ASCII.GetString(text_to_replace).Trim(), Encoding.ASCII.GetString(back_to_normal.Text).Trim()); }
public IEnumerable <CharReplacedText> SplitChunks(byte[] str, int SchemaId) { List <uint8_t[]> brake_down_text = SplitChunks(str).ToList(); List <CharReplacedText> return_texts = new List <CharReplacedText>(); int i = 0; foreach (uint8_t[] array in brake_down_text) { CharReplacedText charReplacedText = new CharReplacedText(SchemaId); charReplacedText.TextPosition = i; charReplacedText.Text = array; return_texts.Add(charReplacedText); i++; } return(return_texts); }
public void ReplacePlaintextTest() { CharReplacedText plaintext = new CharReplacedText(new_const_schema); plaintext.Text = text_to_replace; ReplacedMessage rep_text = m_schema.CharacterReplacePlaintext(plaintext); //string jsonn = JsonConvert.SerializeObject(rep_text); //"Lorem ipsum dol Assert.AreEqual(28, rep_text.replacedTexts.Count); Assert.AreEqual(0xdd, rep_text.replacedTexts[0].Text[0]); Assert.AreEqual(0xb3, rep_text.replacedTexts[0].Text[1]); Assert.AreEqual(0x8C, rep_text.replacedTexts[1].Text[3]); Assert.AreEqual(0x9A, rep_text.replacedTexts[2].Text[4]); Assert.AreEqual(0x93, rep_text.replacedTexts[3].Text[5]); Assert.AreEqual(0x90, rep_text.replacedTexts[27].Text[6]); }
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); }