/**
* Columnar Transposition Cipher Encryption and Decryption.
* @author freitzzz
*/
public class ColumnarTranspositionCipher {
private static String keyword;
private static Object[][] table;
private static String abecedarium;
public static final String ABECEDARIUM="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.;:-@";
private static final String ENCRYPTION_FIELD="≈";
private static final char ENCRYPTION_FIELD_CHAR='≈';
/**
* Encrypts a certain String with the Columnar Transposition Cipher Rule
* @param word Word being encrypted
* @param keyword String with keyword being used
* @return a String with the word encrypted by the Columnar Transposition Cipher Rule
*/
public static String encrpyter(String word,String keyword){
ColumnarTranspositionCipher.keyword=keyword;
abecedariumBuilder(500);
table=tableBuilder(word);
Object[][] sortedTable=sortTable(table);
String wordEncrypted="";
for(int i=0;iword.length()/keyword.length()){
return (word.length()/keyword.length())+1;
}else{
return word.length()/keyword.length();
}
}
private static Object[] findElements(){
Object[] charValues=new Object[keyword.length()];
for(int i=0;i(int)table[0][j]){
Object[] column=getColumn(tableSorted,tableSorted.length,i);
switchColumns(tableSorted,j,i,column);
}
}
}
return tableSorted;
}
private static Object[] getColumn(Object[][] table,int rows,int column){
Object[] columnArray=new Object[rows];
for(int i=0;i>> "+wordBeingEncrypted);
System.out.println("Word encrypted ->>> "+ColumnarTranspositionCipher.encrpyter(wordBeingEncrypted,keywordForExample));
System.out.println("Word decryped ->>> "+ColumnarTranspositionCipher.decrypter());
System.out.println("\n### Encrypted Table ###");
showTable();
}
}