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); }
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); }