public string RecuperarMensajesSala(string guidResponse, string username) { try { DbConnection connection = new DbConnection(); List <Sala> salasDeUsuarios = connection.BuscarVarios <Sala>("salas", Builders <Sala> .Filter.Eq("guid", guidResponse)); var filtro = Builders <Usuario> .Filter.Eq("user", username); var usuarioActual = connection.BuscarUno <Usuario>("users", filtro); Sala salaActual = new Sala(); foreach (var item in salasDeUsuarios) { if (item.UsuarioA == usuarioActual.User) { salaActual = item; break; } } //Generar key DH para generar 10bitsSDES DiffieHellman PersonaA = new DiffieHellman(usuarioActual.NumeroPrivado) { PublicoExterno = salaActual.ValorPublicoB }; string cadenaLlaveSdes = Convert.ToString(PersonaA.GenerarKey(), 2).PadLeft(10, '0'); Sdes cipher = new Sdes(cadenaLlaveSdes); List <Mensaje> mensajesEncriptados = connection.BuscarVarios <Mensaje>("mensajes", Builders <Mensaje> .Filter.Eq("salaGuid", guidResponse)); List <Mensaje> mensajesDesEncriptados = new List <Mensaje>(); //Des encriptar los mensajes foreach (var item in mensajesEncriptados) { string desEnc = ""; foreach (var caracter in item.Contenido) { byte letra = Convert.ToByte(caracter); desEnc += Convert.ToChar(cipher.SDES_DeCipher(letra)); } Mensaje mensajeDes = new Mensaje(guidResponse) { Contenido = desEnc, Guid = item.Guid, UsuarioEmisor = item.UsuarioEmisor, UsuarioReceptor = item.UsuarioReceptor }; mensajesDesEncriptados.Add(mensajeDes); } var json = JsonConvert.SerializeObject(mensajesDesEncriptados); return(json); } catch { return(""); } }
public async Task <ActionResult> Historial() { var response = await GlobalVariables.WebApiClient.GetStringAsync("https://localhost:44343/api/main/Historial/" + username); var listaMensajes = JsonConvert.DeserializeObject <List <Mensaje> >(response); var historial = new List <string>(); if (listaMensajes.Count != 0) { /*var salaResponse = await GlobalVariables.WebApiClient.GetStringAsync( * "https://localhost:44343/api/main/GetSala/" + usuarioA + "/" + usuarioB); * var salaEncontrada = JsonConvert.DeserializeObject<Sala>(salaResponse);*/ foreach (var item in listaMensajes) { string usuarioa = item.UsuarioEmisor; var queryA = await GlobalVariables.WebApiClient.GetStringAsync("https://localhost:44343/api/main/ObtenerUsuario/" + usuarioa); var usuarioA = JsonConvert.DeserializeObject <Usuario>(queryA); string usuariob = item.UsuarioReceptor; var queryB = await GlobalVariables.WebApiClient.GetStringAsync("https://localhost:44343/api/main/ObtenerUsuario/" + usuariob); var usuarioB = JsonConvert.DeserializeObject <Usuario>(queryB); DiffieHellman DhUsuarioA = new DiffieHellman(usuarioA.NumeroPrivado); DiffieHellman DhUsuarioB = new DiffieHellman(usuarioB.NumeroPrivado); DhUsuarioB.PublicoExterno = DhUsuarioA.PublicoInterno; string llaveSdes = Convert.ToString(DhUsuarioB.GenerarKey(), 2).PadLeft(10, '0'); Sdes cipher = new Sdes(llaveSdes); string mensajeDes = ""; foreach (var character in item.Contenido) { byte letra = Convert.ToByte(character); mensajeDes += Convert.ToChar(cipher.SDES_DeCipher(letra)); } historial.Add(item.UsuarioEmisor + " a " + item.UsuarioReceptor + ": " + mensajeDes); } } else { Response.Write("<script>alert('El historial está vacío!!')</script>"); } return(View(historial)); }
static string DesEncriptarMensaje(string mensaje, string tenBitsInput) { string retorno = ""; Sdes cipher = new Sdes(tenBitsInput); foreach (var item in mensaje) { byte input = Convert.ToByte(item); byte desCifrado = cipher.SDES_DeCipher(input); retorno += Convert.ToChar(desCifrado); } return(retorno); }
List <Mensaje> ListaMensajesDesEncriptados(List <Mensaje> encriptList, DbConnection connection) { List <Mensaje> retorno = new List <Mensaje>(); foreach (var item in encriptList) { var emisor = item.UsuarioEmisor; var usuarioA = connection.BuscarUno <Usuario>("users", Builders <Usuario> .Filter.Eq("user", emisor)); var receptor = item.UsuarioReceptor; var usuarioB = connection.BuscarUno <Usuario>("users", Builders <Usuario> .Filter.Eq("user", receptor)); DiffieHellman DhUsuarioA = new DiffieHellman(usuarioA.NumeroPrivado); DiffieHellman DhUsuarioB = new DiffieHellman(usuarioB.NumeroPrivado); DhUsuarioB.PublicoExterno = DhUsuarioA.PublicoInterno; string llaveSdes = Convert.ToString(DhUsuarioB.GenerarKey(), 2).PadLeft(10, '0'); Sdes cipher = new Sdes(llaveSdes); string mensajeDesc = ""; foreach (var caracter in item.Contenido) { byte letra = Convert.ToByte(caracter); mensajeDesc += Convert.ToChar(cipher.SDES_DeCipher(letra)); } Mensaje desEncriptado = new Mensaje(item.SalaGuid) { Contenido = mensajeDesc, Guid = item.Guid, UsuarioEmisor = item.UsuarioEmisor, UsuarioReceptor = item.UsuarioReceptor, ContenidoArchivos = item.ContenidoArchivos }; retorno.Add(desEncriptado); } return(retorno); }