//ESTE ES ALGORITMO LO QUE NO SE ES COMO CREAR EL OBJETO PARA MANDARLO JUNTO CON EL MENSAJE.
using System;
using System.Net.Sockets;
using System.Text;
using System.Security.Cryptography;
class Program
{
class encriptar
{
public string cifrar(string mensaje)
{
string clav = "";
byte[] llave; //Arreglo donde guardaremos la llave para el cifrado 3DES.
byte[] arreglo = UTF8Encoding.UTF8.GetBytes(mensaje); //Arreglo donde guardaremos la cadena descifrada.
// Ciframos utilizando el Algoritmo MD5.
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
llave = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(clav));
md5.Clear();
//Ciframos utilizando el Algoritmo 3DES.
TripleDESCryptoServiceProvider tripledes = new TripleDESCryptoServiceProvider();
tripledes.Key = llave;
tripledes.Mode = CipherMode.ECB;
tripledes.Padding = PaddingMode.PKCS7;
ICryptoTransform convertir = tripledes.CreateEncryptor(); // Iniciamos la conversión de la cadena
byte[] resultado = convertir.TransformFinalBlock(arreglo, 0, arreglo.Length); //Arreglo de bytes donde guardaremos la cadena cifrada.
tripledes.Clear();
return Convert.ToBase64String(resultado, 0, resultado.Length); // Convertimos la cadena y la regresamos.
}
class desencriptar
{
string cla = "";
public string descifrar(string mensaje)
{
byte[] llave;
byte[] arreglo = Convert.FromBase64String(mensaje); // Arreglo donde guardaremos la cadena descovertida.
// Ciframos utilizando el Algoritmo MD5.
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
llave = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(cla));
md5.Clear();
//Ciframos utilizando el Algoritmo 3DES.
TripleDESCryptoServiceProvider tripledes = new TripleDESCryptoServiceProvider();
tripledes.Key = llave;
tripledes.Mode = CipherMode.ECB;
tripledes.Padding = PaddingMode.PKCS7;
ICryptoTransform convertir = tripledes.CreateDecryptor();
byte[] resultado = convertir.TransformFinalBlock(arreglo, 0, arreglo.Length);
tripledes.Clear();
string cadena_descifrada = UTF8Encoding.UTF8.GetString(resultado); // Obtenemos la cadena
return cadena_descifrada; // Devolvemos la cadena
}
public string clave = "cadenadecifrado";
static void Main(string[] args)
{
encriptar objencriptar = new encriptar();
desencriptar objdesencriptar = new desencriptar();
objdesencriptar.descifrar (string);
string salida = "exit";
Socket cliente = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
cliente.Connect("148.210.134.228", 9999);
string mensaje;
do
{
Console.WriteLine("ïntroduce texto");
// AQUI QUIERO QUE SE ENVIE LA LLAVE Y EL MENSAJE DE ENCRIPTACION
mensaje = Console.ReadLine();
cliente.Send(UTF8Encoding.UTF8.GetBytes(mensaje));
}
while (mensaje != salida);
Console.WriteLine("Mensaje enviado!");
Console.ReadKey();
}
}
}
}