PROGRAMA DE ENCRIPTADO UTILIZANDO LA CIFRA DE CÉSAR
Es un applet que se basa en el método de encriptación llamado la cifra de cesar:
El código de la página:
<HTML>
<HEAD>
<
</HEAD>
<BODY>
<P> </P><center>
<h1> LA CIFRA DE CÉSAR</H1>
<!-- Insert HTML here -->
<applet
code=CaesarCipherApplet.class
name=CaesarCipherApplet
width=400
height=400
VIEWASTEXT>
</applet>
</center>
</BODY>
</HTML>
El código del applet que se llama CaesarCipherApplet:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class CaesarCipherApplet
extends Applet
{
private
TextArea textoPlano = new TextArea(5,50);
private
TextArea textoCifrado = new
TextArea(5,50);
private
Choice escojerClave = new Choice();
private
Button encrypt = new Button("Encriptar");
private
Button decrypt = new Button("Desencriptar");
private int clave = 0;
public CaesarCipherApplet()
{
for (int i=0;
i<26;i++) escojerClave.add("
"+i);
layoutApplet();
escojerClave.addItemListener(new ChoiceHandler());
encrypt.addActionListener(new ButtonHandler());
decrypt.addActionListener(new ButtonHandler());
resize(400,400);
}
private
void layoutApplet()
{
Panel keyPanel = new Panel();
keyPanel.add(new
Label("Clave: "));
keyPanel.add(escojerClave);
keyPanel.add(encrypt);
keyPanel.add(decrypt);
Panel textPanel = new Panel();
Panel textPanel1
= new Panel();
Panel textPanel2
= new Panel();
textPanel1.add( new Label(" Texto Plano "));
textPanel1.add(textoPlano);
textPanel2.add(new Label(" Texto Cifrado "));
textPanel2.add(textoCifrado);
textPanel.setLayout( new GridLayout(2,1));
textPanel.add(textPanel1);
textPanel.add(textPanel2);
setLayout(new
BorderLayout());
add("North", keyPanel);
add("Center", textPanel);
}
class ChoiceHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
clave = new Integer(escojerClave.getSelectedIndex()).intValue();
}
}
class ButtonHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals(encrypt.getLabel()))
textoCifrado.setText(CaesarCipher.encriptar(textoPlano.getText(),clave));
else if (e.getActionCommand().equals(decrypt.getLabel()))
textoPlano.setText(CaesarCipher.desencriptar(textoCifrado.getText(),clave));
}
}
}
El código de la clase que encripta CaesarCipher.java:
public class CaesarCipher
{
public
static String encriptar(String s, int clave)
{
String retorno =
"";
for (int i = 0; i < s.length();i++)
{
char c = s.charAt(i);
c = encriptar(c,clave);
retorno += String.valueOf(c);
}
return retorno;
}
public
static String desencriptar(String s, int clave)
{
return encriptar(s, - clave);
}
public
static char encriptar(char c, int clave)
{
if(c >= 'a' && c<= 'z') c =
Character.toUpperCase(c);
if(c >= 'A' && c<= 'Z') c = rotar(c,clave);
return c;
}
public
static char desencriptar(char c, int clave)
{
if( c < 'A' || c > 'Z') return c;
else return rotar(c , - clave);
}
private
static char rotar(char c, int key)
{
key = key % 26;
int n =
( c - 'A' + key ) % 26;
if(n < 0) n += 26;
return
(char) (n + 'A');
}
}