Ejemplo n.º 1
0
        public string Encrypt(string text, byte[] key)
        {
            byte[] message = Encoding.UTF8.GetBytes(text);
            int    toPad   = message.Length % BlockSize;

            byte[] bytes;
            if (toPad == 0)
            {
                bytes = message;
            }
            else
            {
                toPad = BlockSize - message.Length % BlockSize;
                bytes = new byte[message.Length + toPad];
                for (int i = 0; i < bytes.Length; i++)
                {
                    if (i < message.Length)
                    {
                        bytes[i] = message[i];
                    }
                }
            }

            object sessionKeys = MakeKey(key);

            StringBuilder stringBuilder = new StringBuilder();

            for (int i = 0; i < bytes.Length / BlockSize; i++)
            {
                byte[] enc = BlockEncrypt(bytes, BlockSize * i, sessionKeys);
                stringBuilder.Append(ByteToHex(enc));
            }

            return(Converts.StringToBinary(stringBuilder.ToString()));
        }
Ejemplo n.º 2
0
        public void SendMsg(string msg, int id)
        {
            foreach (var item in users)
            {
                string answer = DateTime.Now.ToShortTimeString();
                string keyForDecrypt;

                var user = users.FirstOrDefault(i => i.ID == id);
                if (user != null)
                {
                    answer       += ": " + user.Name + " ";
                    keyForDecrypt = msg.Substring(msg.Length - 44);
                    msg           = msg.Remove(msg.Length - 44);
                    msg           = serpent.Encrypt(serpent.Decrypt(msg, keyForDecrypt), Convert.FromBase64String(item.Key));
                    msg           = Converts.BinaryToString(msg);
                    msg          += item.Key;
                }
                answer += msg;
                item.operationContext.GetCallbackChannel <IServerChatCallback>().MsgCallback(answer);
            }
        }