Aqui el codigo que encontré:
Código
import java.io.*; public class encriptador { //instance private char[][] matriz; //reader //BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); modo consola //methods int repeticiones=0; int jSize= claveActual.length(); while (repeticiones<jSize) { boolean cambio=false; int i=repeticiones; claveActual=""; for (int j=0; j<jSize;j++) claveActual=claveActual+matriz[0][j]; while ((!cambio)&&(i<jSize)) { if (claveOriginal.charAt(repeticiones)==claveActual.charAt(i)){ modificarArreglo(i,repeticiones); cambio=!cambio; } else i++; } repeticiones++; } for (int i=1; i<matriz.length;i++) for (int j=0; j<matriz[0].length;j++) output=output + matriz[i][j]; return output; } claveOriginal=clave; textoOriginal=texto; int jSize= claveOriginal.length(); int iSize= (textoOriginal.length()/jSize)+1; if ((textoOriginal.length()%jSize)!=0) iSize++; /*debug System.out.println("Filas:" + iSize + "Columnas:"+jSize); */ matriz= new char[iSize][jSize]; int charPos=0; int keyPos=0; for (int i=0; i<claveOriginal.length();i++) { matriz[0][i]=claveOriginal.charAt(i); } for (int i=1; i<iSize;i++) { for (int j=0;j<jSize;j++) { try { matriz[i][j]=textoOriginal.charAt(charPos); charPos++; } } } /*debug for (int i=0; i<iSize;i++) { for (int j=0; j<jSize;j++) { System.out.print(matriz[i][j]); } } */ int repeticiones=0; while (repeticiones<jSize) { char[] filaCero= new char[jSize-repeticiones]; for (int j=repeticiones; j<jSize; j++) { filaCero[j-repeticiones]=matriz[0][j]; } int i=0; boolean cambio=false; //tamaño de filaCero while ((i<jSize-repeticiones)&&(!cambio)){ if (esElMenor(filaCero,filaCero[i])){ modificarArreglo(i+repeticiones,repeticiones); cambio=!cambio; } i++; } repeticiones++; } /*debug for (int i=0; i<iSize;i++) { for (int j=0; j<jSize;j++) { System.out.print(matrizAuxiliar[i][j]); } } */ for (int j=0; j<jSize;j++) { for (int i=0; i<iSize;i++) { if (i==0) claveActual=claveActual + matriz[i][j]; output=output+matriz[i][j]; } } return output; /*debug for (int j=0; j<jSize;j++) { for (int i=0; i<iSize;i++) { System.out.print(matrizFinal[j][i]); } System.out.println(); } */ } public void modificarArreglo(int colActual, int rep) { //intercambia las columnas que pasan como param /*for (int i=0; i<matriz.length;i++) matrizAuxiliar[i][rep]=matriz[i][colActual];*/ char[]aux = new char[matriz.length]; for (int i=0; i<matriz.length;i++){ aux[i]=matriz[i][rep]; matriz[i][rep]=matriz[i][colActual]; matriz[i][colActual]=aux[i]; } } public boolean esElMenor(char[] arreglo, char car) { boolean menor=true; //asume que es el menor. int i =0; if (car==' ') menor = false; else { while ((i<arreglo.length)&&(menor)) { if ((arreglo[i]!=' ')&&(car!=' ')&&(arreglo[i]<car)) menor=!menor; else i++; } } return menor; } encriptador encriptador = new encriptador(); encriptador.codificar("Hola", "debci"); } }//fin clase encriptador
Tengo un out para que muestre pero no sale nada.
Saludos