This is an Java(J2SE) implementation for the play-fair cipher (encryption & decryption) technique . It is a GUI program that ask the user to enter the encryption key and then type the plain text and then press Encrypt button to encrypt and the cipher text will be displayed. finished-projects/polyalphabetic-cipher-java-code-t647.html
_________________ Please recommend my post if you found it helpful
This is an Java(J2SE) implementation for the playfair cipher en-decription technique . It is a GUI program that ask the user to enter the encription key and then type the plain text and then press Encript button to encript and the cipher text will be desplayed.
public String Encript(String Source) { String src_arr[]=Divid2Pairs(Source);
String Code=new String();
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i< src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for specail casese if(part1[0]==part2[0])//same row { if (part1[1]<4) part1[1]++;
else part1[1]=0;
if(part2[1]<4) part2[1]++;
else part2[1]=0;
}
else if (part1[1]==part2[1]) //same column { if (part1[0]<4) part1[0]++;
else part1[0]=0;
if(part2[0]<4) part2[0]++;
else part2[0]=0; }
else { int temp=part1[1]; part1[1]=part2[1]; part2[1]=temp; }
public String Decript (String Code) { String Original=new String();
String src_arr[]=Divid2Pairs(Code);
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i<= src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for specail casese if(part1[0]==part2[0])//same row { if (part1[1]>0) part1[1]--;
else part1[1]=4;
if(part2[1]>0) part2[1]--;
else part2[1]=4;
}
else if (part1[1]==part2[1]) //same column { if (part1[0]>0) part1[0]--;
else part1[0]=4;
if(part2[0]>0) part2[0]--;
else part2[0]=4; }
else { int temp=part1[1]; part1[1]=part2[1]; part2[1]=temp; }
Original =Original + matrix_arr[part1[0]][part1[1]] + matrix_arr[part2[0]][part2[1]]; }
I was searching on the Internet & found your code. It was very helpful to me. but unfortunately it contains some bugs. I had resolved them & adds the 'x' separation between repetitive characters.
public void setKey(String k) { // This function will take the input key from the user // Then it'll remove duplication of letters from the key // Will add it to the private KeyWord for matrix generation
String K_adjust=new String(); boolean flag = false;
public void KeyGen() { // This function adjust the alphabetical letters adding the // KeyWord on the beginning of them & then it calls the matrix function
boolean flag=true; char current;
Key=KeyWord;
for ( int i=0 ; i<26 ; i++) { current=(char)(i+97);
for (int i=0 ; i<5 ;i++) { for (int j=0 ; j<5 ; j++) { matrix_arr[i][j]=Key.charAt(counter); System.out.printf("%s ",matrix_arr[i][j]);
counter++; }
System.out.println("\n"); } }
private String format(String old_text) { // This function is to adjust the Text to encrypt // It changes all the 'j' letters to 'i' & add 'x' character // between repeatable pairs.
int i = 0; int j = 0; int len = 0; String text = new String(); len = old_text.length();
//System.out.println(old_text); /*** Change all j's into i's *****/ for (int tmp = 0; tmp < len; tmp++) { if (old_text.charAt(tmp) == 'j') { text = text + 'i'; } else text = text+old_text.charAt(tmp); } /**********************************/ len = text.length(); /*** Assign 'x' to letters that repeat in a diagram ***/ for (i = 0; i < len; i = i + 2) //run for half of string length { if (text.charAt(i+1) == text.charAt(i)) //if char = previous char { text = text.substring(0, i+1) + 'x' + text.substring(i+1); } else //not a repeat character, move along {} } return text; }
public String Encript(String Source) { System.out.println("Encription Start");
String src_arr[]=Divid2Pairs(Source);
String Code=new String();
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i< src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for special cases if(part1[0]==part2[0])//same row { if (part1[1]<4) part1[1]++; else part1[1]=0;
if(part2[1]<4) part2[1]++; else part2[1]=0;
}
else if (part1[1]==part2[1]) //same column { if (part1[0]<4) part1[0]++; else part1[0]=0;
public String Decript (String Code) { System.out.println("Decription Start");
String Original=new String();
String src_arr[]=Divid2Pairs(Code);
char one; char two;
int part1[]=new int[2]; int part2[]=new int[2];
//start on pair by pair for (int i=0 ; i< src_arr.length ;i++ ) { one = src_arr[i].charAt(0);//get first char two = src_arr[i].charAt(1);//get second char
part1 = GetDiminsions(one);//get position of the first char part2 = GetDiminsions(two);//get position of the second char
//check for special cases if(part1[0]==part2[0])//same row { if (part1[1]>0) part1[1]--; else part1[1]=4;
if(part2[1]>0) part2[1]--; else part2[1]=4; }
else if (part1[1]==part2[1]) //same column { if (part1[0]>0) part1[0]--; else part1[0]=4;
Original =Original + matrix_arr[part1[0]][part1[1]] + matrix_arr[part2[0]][part2[1]]; }
System.out.println(Original); return Original; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub
playfair x=new playfair();
Scanner sc = new Scanner(System.in);
System.out.println("Enter a lower case keyword:"); String keyword = sc.next(); x.setKey(keyword); x.KeyGen();
System.out.println("To Encrypt enter 1 \nTo Decript enter 2\nTesting both enter anything else:"); int choosen_value = sc.nextInt();
if(choosen_value==1) { System.out.println("Enter a lower case word to encrypt:"); String key_input = sc.next(); String Encripted= x.Encript(key_input); } else if(choosen_value==2) { System.out.println("Enter a lower case word to decrypt:"); String decripted = sc.next();
x.Decript(decripted); } else { System.out.println("Enter a lower case word to encrypt & decrypt:"); String key_input = sc.next();