package playfair;
import javax.swing.JOptionPane;
public class PlayFair {
public static void main(String[] args) {
PalabraMatriz matriz= new PalabraMatriz("hola q pez pollo q onda gentE");
matriz.pinta();
Algoritmo algo= new Algoritmo(matriz.getMatriz());
algo.PlayFair("Que tranzas");
grafico g= new grafico(JOptionPane.showInputDialog(null, "Ingrese La cadena con la cual se va a encriptar", "Clave de Encriptacion", JOptionPane.DEFAULT_OPTION));
}
}
public class PalabraMatriz {
protected int renglon=0,fila=0,r=5,f=5;
protected String matriz[][]= new String[r][f];
public PalabraMatriz(String Palabra){
Palabra= Palabra.toLowerCase();
int conta=0;
while(conta < Palabra.length()) {
if(conta==0){
matriz[renglon][fila]=""+Palabra.charAt(conta);
fila++;
conta++;
}else if(BuscaLetra(Palabra.charAt(conta))){
conta++;
}else{
if(fila<5){
if(Palabra.charAt(conta)!=' '){
matriz[renglon][fila]=""+Palabra.charAt(conta);
fila++;
conta++;
}else{
conta++;
}
}else{
renglon++;
fila=0;
}
}
}
RellenaAbc();
}
protected boolean BuscaLetra(char letra){
boolean bandera=false;
int fi=fila;
for (int recorre = 0; recorre <= renglon; recorre++) {
if(renglon>=1){
fi=5;
}
if(bandera==false){
for (int fil = 0; fil < fi; fil++) {
if(matriz[recorre][fil]!=null){
char val=matriz[recorre][fil].charAt(0);
int v=val;
char l=letra;
int let = l;
if(v==let){
bandera=true;
break;
}else{
bandera=false;
}
}else{
break;
}
}
}else{
break;
}
}
return bandera;
}
protected void RellenaAbc(){
int num=97;
char let=(char)num;
while (num<=123) {
if(fila==f){
fila=0;
renglon++;
}else if(BuscaLetra(let)){
let=(char)(num++);
}else{
if(let=='v'){
matriz[renglon][fila]=""+let;
let= (char)(num++);
}else if(let=='w'){
matriz[renglon][fila]=matriz[renglon][fila]+"/"+let;
let= (char)(num++);
fila++;
}else if(let=='n'){
matriz[renglon][fila]=""+let+"/ñ";
let= (char)(num++);
fila++;
}else{
matriz[renglon][fila]=""+let;
let= (char)(num++);
fila++;
}
}
}
}
public String[][] getMatriz(){
return matriz;
}
public void pinta(){
for (int i = 0; i <5; i++) {
for (int j = 0; j <5; j++) {
System.out.print(" "+matriz[i][j]);
}
System.out.println("");
}
}
}
import java.util.StringTokenizer;
public class Algoritmo {
protected String[][] Matriz;
public Algoritmo() {
}
Algoritmo(String Matriz[][]) {
this.Matriz = Matriz;
}
public String PlayFair(String cadena) {
String letraP, letraS, letra = "", letras = "";
StringTokenizer token = new StringTokenizer(cadena.toLowerCase());
while (token.hasMoreTokens()) {
letra += token.nextToken(" ");
}
int conta1 = 0, conta2 = 1;
if ((letra.length() % 2) == 0) {
while (conta1 < letra.length()) {
letraP = letra.charAt(conta1) + "";
letraS = letra.charAt(conta2) + "";
for (int i = 0; i < Matriz.length; i++) {
for (int j = 0; j < Matriz.length; j++) {
if (Matriz[i][j].equals(letraP)) {
for (int k = 0; k < Matriz.length; k++) {
for (int l = 0; l < Matriz.length; l++) {
if (Matriz[k][l].equals(letraS)) {
if (i == k) {
if (i == 7) {
letras += Matriz[0][j] + Matriz[k + 1][l]+" ";
} else if (k == 7) {
letras += Matriz[i + 1][j] + Matriz[0][l]+" ";
} else {
letras += Matriz[i + 1][j] + Matriz[k + 1][l]+" ";
}
} else if (j == l) {
if (j == 7) {
letras += Matriz[i][0] + Matriz[k][l + 1]+" ";
} else if (l == 7) {
letras += Matriz[i][j + 1] + Matriz[k][0]+" ";
} else {
letras += Matriz[i][j + 1] + Matriz[k][l + 1]+" ";
}
} else if (i != k && j != l) {
letras += Matriz[i][l] + Matriz[k][j]+" ";
}
}
}
}
}
}
}
conta1 += 2;
conta2 += 2;
}
return "El mensaje Encriptado es: "+letras+". La cadena ingresada es: "+cadena;
} else {
return "Ingrese una cadena par ";
}
}
}
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JOptionPane;
public class grafico extends JFrame implements ActionListener, KeyListener {
private JLabel Et = new JLabel("Ingrese la Cadena de a encriptar");
private JTextField Texto = new JTextField();
private JButton btn = new JButton("Aceptar");
protected String Clave;
protected PalabraMatriz matriz;
protected Algoritmo algo;
grafico(String Palabra) {
Clave = Palabra;
setBounds((Toolkit.getDefaultToolkit().getScreenSize().height / 2) - 5, (Toolkit.getDefaultToolkit().getScreenSize().width / 2) - 400, 250, 170);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(null);
Et.setBounds(20, 10, 350, 20);
Texto.setBounds(45, 40, 150, 20);
btn.setBounds(70, 70, 100, 30);
add(Texto);
add(Et);
add(btn);
btn.addActionListener(this);
setVisible(true);
matriz= new PalabraMatriz(Clave);
algo= new Algoritmo(matriz.getMatriz());
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn){
JOptionPane.showMessageDialog(null, algo.PlayFair(Texto.getText()), "Encriptado", JOptionPane.PLAIN_MESSAGE);
}
}
@Override
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyPressed(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}