Hola a todos, estoy haciendo una clase para cifrar textos, pero tengo un problema, no se muestra en pantalla lo cifrado :s
Aqui el codigo que encontré:
import java.io.*;
public class encriptador {
//instance
private String claveOriginal="";
private String textoOriginal="";
private String claveActual="";
private char[][] matriz;
//reader
//BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); modo consola
//methods
public String decodificar(String texto) {
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++;
}
String output="";
for (int i=1; i<matriz.length;i++)
for (int j=0; j<matriz[0].length;j++)
output=output + matriz[i][j];
return output;
}
public String codificar(String texto, String clave){
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++;
}
catch (Exception e) {matriz[i][j]=' '; 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]);
}
}
*/
String output="";
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;
}
public static void main(String args[]) {
encriptador encriptador = new encriptador();
encriptador.codificar("Hola", "debci");
}
}//fin clase encriptador
Tengo un out para que muestre pero no sale nada.
Saludos
dices que no de muestra nada que raro por que a mi si me lo muestra y funciona bien :-\
Saludos.
Cita de: L-EYER en 15 Noviembre 2009, 15:06 PM
dices que no de muestra nada que raro por que a mi si me lo muestra y funciona bien :-\
Saludos.
no me jodas, que te sale?
Saludos
Text Encript : blcadHeoi
Descript: Hola
Saludos
Cita de: L-EYER en 15 Noviembre 2009, 15:30 PM
Text Encript : blcadHeoi
Descript: Hola
Saludos
a mi no me da salida....
como lo haces? le has añadido algo?
Saludos
no que yo sepa! finaje que no estas mandando nada a la salida estandar y todos tus metodos estan retornando string
public static void main(String args[]) {
encriptador encriptador = new encriptador();
String t = encriptador.codificar("Hola", "debci").trim();
System.out.println("Text Encrypt : "+t);
System.out.println("Descrypt: "+encriptador.decodificar(t));
}
Cita de: L-EYER en 15 Noviembre 2009, 16:03 PM
no que yo sepa! finaje que no estas mandando nada a la salida estandar y todos tus metodos estan retornando string
public static void main(String args[]) {
encriptador encriptador = new encriptador();
String t = encriptador.codificar("Hola", "debci").trim();
System.out.println("Text Encrypt : "+t);
System.out.println("Descrypt: "+encriptador.decodificar(t));
}
Coño es verdad, deje el out, pensé que lo habia añadido a los metodos para que devolviese un out xDDDDD
que tonteria xDDDDDD
Saludos
jajaj ;D ;D como se te pudo olvidar eso :)
Saludos.