Exemplo n.º 1
0
        public void Decrypt(byte[] message)
        {
            Data data = new Data(message, _blockSize);

            for (int i = 0; i < data.NumberOfBlocks; ++i)
            {
                try
                {
                    byte[] block = data.GetNBlock(i);
                    block = InitialPermutation(block);

                    for (sbyte round = 15; round >= 0; --round)
                    {
                        byte[] subkey = _key.Subkeys.ElementAt(round);
                        block = Round(block.Take(4).ToArray(), block.Skip(4).Take(4).ToArray(), subkey);
                    }
                    block            = ReverseLeftAndRight(block);
                    block            = ReversedInitialPermutation(block);
                    DecryptedMessage = DecryptedMessage.Concat(block).ToArray();
                }
                catch
                {
                    throw;
                }
            }
        }
 private void Read(BinaryReader reader) {
     fromId = reader.ReadInt32();
     toId = reader.ReadInt32();
     date = reader.ReadInt32();
     output = reader.ReadBoolean();
     unread = reader.ReadBoolean();
     message = TL.Parse<DecryptedMessage>(reader);
     file = TL.Parse<EncryptedFile>(reader);
 }
 public MessageModelEncryptedDelivered(int fromId, int toId, int date, bool output, bool unread, DecryptedMessage message, EncryptedFile file) {
     this.fromId = fromId;
     this.toId = toId;
     this.date = date;
     this.output = output;
     this.unread = unread;
     this.message = message;
     this.file = file;
 }
Exemplo n.º 4
0
 private void Read(BinaryReader reader)
 {
     fromId  = reader.ReadInt32();
     toId    = reader.ReadInt32();
     date    = reader.ReadInt32();
     output  = reader.ReadBoolean();
     unread  = reader.ReadBoolean();
     message = TL.Parse <DecryptedMessage>(reader);
     file    = TL.Parse <EncryptedFile>(reader);
 }
Exemplo n.º 5
0
 public MessageModelEncryptedDelivered(int fromId, int toId, int date, bool output, bool unread, DecryptedMessage message, EncryptedFile file)
 {
     this.fromId  = fromId;
     this.toId    = toId;
     this.date    = date;
     this.output  = output;
     this.unread  = unread;
     this.message = message;
     this.file    = file;
 }
        public IActionResult Post([FromBody] DecryptedMessage message)
        {
            var alphabet      = message.Alphabet;
            var key           = message.Key;
            var decryptedText = message.DecryptedText;

            Caesar cipher = new Caesar(alphabet);

            message.DecryptedText = cipher.Encrypt(decryptedText, key);

            return(Json(message));
        }
Exemplo n.º 7
0
        public override async Task <bool> SendMessage(string message)
        {
            try {
                logger.info("send message with key: {0}", BitConverter.ToString(key).Replace("-", "").ToLower());
                long             messageId = Helpers.GenerateRandomLong();
                DecryptedMessage msg       = TL.decryptedMessage(messageId, Helpers.GenerateRandomBytes(128), message, TL.decryptedMessageMediaEmpty());
                byte[]           data;
                using (MemoryStream memory = new MemoryStream()) {
                    using (BinaryWriter writer = new BinaryWriter(memory)) {
                        msg.Write(writer);
                        data = memory.ToArray();
                    }
                }

                using (MemoryStream memory = new MemoryStream()) {
                    using (BinaryWriter writer = new BinaryWriter(memory)) {
                        writer.Write(data.Length);
                        writer.Write(data);
                        data = memory.ToArray();
                    }
                }

                byte[]     msgKey = Helpers.CalcMsgKey(data);
                AESKeyData aesKey = Helpers.CalcKey(key, msgKey, true);
                data = AES.EncryptAES(aesKey, data);

                using (MemoryStream memory = new MemoryStream()) {
                    using (BinaryWriter writer = new BinaryWriter(memory)) {
                        writer.Write(fingerprint);
                        writer.Write(msgKey);
                        writer.Write(data);
                        data = memory.ToArray();
                    }
                }

                Messages_sentEncryptedMessageConstructor sent = (Messages_sentEncryptedMessageConstructor)await session.Api.messages_sendEncrypted(InputEncryptedChat, messageId, data);

                MessageModel messageModel = new MessageModelEncryptedDelivered(TelegramSession.Instance.SelfId, OpponentId, sent.date, true, true, msg, TL.encryptedFileEmpty());
                messages.Add(messageModel);

                TelegramSession.Instance.Dialogs.Model.UpDialog(this);

                return(true);
            } catch (Exception e) {
                logger.error("send encrypted message exception: {0}", e);
                return(false);
            }
        }
 public override void Read(BinaryReader reader)
 {
     this.layer   = reader.ReadInt32();
     this.message = Tl.Parse <DecryptedMessage>(reader);
 }
 public DecryptedMessageLayerConstructor(int layer, DecryptedMessage message)
 {
     this.layer   = layer;
     this.message = message;
 }