Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Criptografía

Buenas tardes grupo tengo una pregunta si alguien me puede ayudar estoy realizando un programa de criptografia en netbeans que lee cualquier archivo y lo cargo en una matriz tipo int le sumo un numero a cada celda pero después no se como convertir esa matriz nueva en matriz tipo byte para poderla volverla a guardar. he visto ejemplos con matriz de byte q los lee y después los guarda pero no le hacen modificaciones y no se como hacerlo. gracias por su ayuda.

octubre 18, 2016 | Unregistered CommenterCristian

Hola, y por que conviertes la matriz a tipo int???

Supongo que tu lees la matriz en int... Existe una forma de leerla en byte... asi:


byte[] ch=Files.readAllBytes(Paths.get("Ruta y nombre del fichero cuyo texto quieres encriptar"));

Lo siguiente seria sumarle un numero, no? pues...

for(int i=0; i<ch.length;i++){
ch[i]=(byte)(ch[i]+2);
}

De esa manera le sumas un numero a cada byte obtenido del fichero sin necesidad de convertir nada a int, en este caso es un numero fijo, el 2 pero puede ser variable poniendo una variable... valga la redundancia.

Lo siguiente sería escribirlo, pues...


Files.write(Paths.get("ruta y nombre del nuevo archivo"), ch,StandardOpenOption.CREATE_NEW);

De esa manera no es necesario pasar por int, y en 4 o 5 lineas lo tienes apañado.

Ahora te diré como convertir una matriz de int a bytes, jeje....

Teniendo una matriz de int.. como la que sigue:

int[] m1={65,66,67,68,69};

Creamos una nueva matriz del mismo tamaño, pero de tipo byte:

byte[] m2=new byte[m1.length];

Y lo único que nos queda por hacer, es un bucle recorriendo la matriz de int y convirtiendo cada posición en byte y almacenándola en la segunda matriz:

for(int i=0;i<m1.length;i++){
m2[i]=(byte)m1[i];
}

Y para guardarla en el fichero, como te puse arriba... Supongo que habrá mas maneras de hacerlo, pero bueno eso es una de las mas sencillas.

Debes tener en cuenta, que si el int que conviertes a byte es mayor de 127, pues vas a tener resultados extraños, ten eso en cuenta, ya que el byte va de -128 a 127. Si el int que intentas convertir esta fuera de ese rango, pasaran cosas raras, jeje.

octubre 18, 2016 | Registered Commenterloderain