public void NuevoMensaje(string emisor, string receptor, string contenido)
        {
            DbConnection connection = new DbConnection();
            //Obtener sala
            var filter = Builders <Sala> .Filter.Eq("usuarioA", emisor);

            var  salas = connection.BuscarVarios <Sala>("salas", filter);
            Sala sala  = new Sala();

            //Obtener la sala que coincide con emisor y receptor...
            foreach (var item in salas)
            {
                if (item.UsuarioB == receptor)
                {
                    sala = item;
                }
            }

            //Obtener el GUID de la sala
            string guidSala = sala.GUID;
            //Obtener usuario para encriptar con valor privado...
            var userFilter = Builders <Usuario> .Filter.Eq("user", emisor);

            var usuario = connection.BuscarUno <Usuario>("users", userFilter);
            //Recuperar valores publicos y provados para Encriptar...
            int valorPublicoReceptor = sala.ValorPublicoB;
            int valorPrivadoEmisor   = usuario.NumeroPrivado;

            DiffieHellman dh = new DiffieHellman(valorPrivadoEmisor);

            dh.PublicoExterno = valorPublicoReceptor;

            string LlaveSdes = Convert.ToString(dh.GenerarKey(), 2).PadLeft(10, '0');
            Sdes   cipher    = new Sdes(LlaveSdes);

            //Encriptar mensaje con SDES
            string mensajeEncrip = "";

            foreach (var item in contenido)
            {
                byte letra = Convert.ToByte(item);
                mensajeEncrip += Convert.ToChar(cipher.SDES_Cipher(letra));
            }

            Mensaje nuevoMensaje = new Mensaje(guidSala)
            {
                UsuarioEmisor   = emisor,
                UsuarioReceptor = receptor,
                Contenido       = mensajeEncrip
            };

            connection.InsertDb <Mensaje>("mensajes", nuevoMensaje);
        }
Exemplo n.º 2
0
        static string EncriptarMensaje(string mensaje, string tenBitsInput)
        {
            string retorno = "";
            Sdes   cipher  = new Sdes(tenBitsInput);

            foreach (var item in mensaje)
            {
                byte input   = Convert.ToByte(item);
                byte cifrado = cipher.SDES_Cipher(input);

                retorno += Convert.ToChar(cifrado);
            }

            return(retorno);
        }