...poco a poco los impulsos eléctricos comenzaron a llenar la memoria de su cerebro de silicio. Tras un pequeño parpadeo que ilumino sus ojos, cobro vida...
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
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.