Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }
Example #4
0
        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);
        }
Example #5
0
        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]);
        }
Example #6
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);
        }
Example #7
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);
        }