• Esteganografía

 #458238  por doble2jota
 20 Oct 2014, 19:49
Hola,
Estoy intentando realizar un programa en JAVA que oculte información (un string) dentro de jpeg, he leído por internet que modificando los bits menos significativos que guardan la información de cada pixel se puede hacer.Hasta ahora lo único que he conseguido a sido almacenar la imagen en un array de bytes, el problema es que no se cuales son los bytes que se corresponden con la información de los píxeles, modicidando al azar algunas posiciones del array de bytes al azar he podido comprobar que en algunas posiciones la imagen no cambia, pero no he visto ningún patón que me diga que cada ciertos bytes la imagen no va a cambiar.
La profundidad de bits de la imagen es de 24 bits 3 bytes para representar pixel.

Aquí dejo parte del código:

BufferedImage originalImage = ImageIO.read(new File("C:\\Users\\javier\\Desktop\\Jo3W7huW.jpeg"));

// convert BufferedImage to byte array

//principal donde escribo el secreto
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpeg", baos);
baos.flush();
imageInByte = baos.toByteArray();

System.out.println(imageInByte[7000]);
String Frase="hola que ase por aqui ud";
//Bucle Para Insertar el secreto
//System.out.println(imageInByte.length);


//Escribo el nuevo mensaje( Aqui es donde tengo el problema)
for (int i = 0; i < imageInByte.length; i++) {
if ((i>7000)&&(i<8000)) {
imageInByte=5;
}

}

//System.out.println(imageInByte[7000]);

//Cerramos Secreta
baos.close();

// convert byte array back to BufferedImage
InputStream in = new ByteArrayInputStream(imageInByte);
BufferedImage bImageFromConvert = ImageIO.read(in);

ImageIO.write(bImageFromConvert, "jpeg", new File("C:\\Users\\javier\\Desktop\\perez.jpeg"));

Muchas Gracias de antemano.