Encriptación / Desencriptación







Sencillo programa que nos permite cifrar y descifrar un texto a fin de darle mayor privacidad.
Le damos salida a un fichero de texto, por si necesitamos enviar el texto cifrado por correo electrónico o cualquier otro medio. Quien reciba el texto cifrado debe disponer del programa para su desencriptado. Basado en el cifrado Cesar.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.IO;

namespace Encriptacion_1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string entrada, salida;
entrada = textBox1.Text;
salida = "";
// enviamos el texto cifrado a un fichero de texto.
using (StreamWriter sw = new StreamWriter("textocifrado.txt"))
{

salida = encriptacion(entrada);
textBox2.Text = (salida);
  sw.WriteLine(salida);
}

}

private void button2_Click(object sender, EventArgs e)
{
string entrada, salida;
entrada = textBox2.Text;
salida = encriptacion(entrada);
textBox3.Text = desencriptacion(entrada);
}

private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}





private static string encriptacion(string entradaString)
{
string textoacifrar = "";
// Convertir los caracteres de la cadena de entrada en sus codigos ASCII y                                             almacenarlos en la matriz
ArrayList matrizascii = new ArrayList();

for (int i = 0; i < entradaString.Length; i++)
{
matrizascii.Add((int)Convert.ToChar(entradaString[i]));
}
// Llenar la matriz de la Z a la Z con mayusculas y minusculas
ArrayList ahastaz = new ArrayList();

for (int i = 0, j = 65; i < 26; i++, j++)
{
ahastaz.Add((char)j);
}
//Elige al azar un caracter de la A a la Z
int posicionascii = Convert.ToInt32(ahastaz[(new Random()).Next(26)]);

ArrayList salidamatriz = new ArrayList();
// Añadir a cada caracter cada elemento de la posicion ASCII
for (int i = 0; i < entradaString.Length; i++)
{
salidamatriz.Add(Convert.ToInt32(matrizascii[i]) + posicionascii);
}

int[] k = (int[])salidamatriz.ToArray(System.Type.GetType("System.Int32"));

foreach (int i in k)
{
textoacifrar = textoacifrar + (char)i;
}

if (entradaString.Length.Equals(textoacifrar.Length))
{
textoacifrar = textoacifrar + (char)posicionascii;
}

return textoacifrar;
}

private static string desencriptacion(string textoacifrar)
{
int posicionascii = Convert.ToInt32(textoacifrar[textoacifrar.Length - 1]);

string texto = "";

foreach (int i in textoacifrar)
{
texto = texto + (char)(Convert.ToInt32(i) - posicionascii);
}

return texto;
}

}

}


// adaptado del algoritmo de J.Trivede








No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.