Es posible ocultar archivos en otros archivos. Para las imágenes, puede utilizar los bits menos significativos de una definición de píxeles RGB.
Un píxel tiene 3 bytes que definen su color. Light Sea Green se define por: 32,178,170 (R, G, B)
Esto se traduce como binario: 00100000,10101100,1010101010
Cuando cambiamos el último bit de estos, el color de una imagen no cambia significativamente. Por lo tanto, podemos usar el bit Menos Significativo de cada valor de color del píxel. Esto nos da 3 bits por píxel que podemos utilizar.
Tome un texto, conviértalo a su representación binaria y luego escriba un algoritmo que cambie el LSB de cada valor R, G y B de la imagen al bit de ese texto. Si tiene un texto de 128 bits de longitud, necesitará 128/3 píxeles para ocultar ese texto.
Digamos que tengo un texto cuya representación binaria es:
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001 00100000
Este texto tiene 13 bytes de longitud, lo que significa que hay 13 * 8 = 104 bits. Sabemos que podemos ocultar hasta 3 bits en un píxel, por lo que 104/3 = 34.666, por lo que necesitamos 35 píxeles.
Entonces, si tenemos una imagen, usaremos los primeros 35 píxeles. Para mostrarte cómo funciona, daré un ejemplo con dos píxeles. Podemos ocultar 6 bits allí, los primeros seis bits de nuestro texto son 010010
Nuestros píxeles son:
pixel1,R: 00010101
pixel1,G: 01011111
pixel1,B: 10111100
pixel 2,R: 10010001
pixel 2,G: 00010101
pixel 2,B: 11011100
Ahora solo podemos cambiar el último bit para cada valor de color al bit representativo del texto:
pixel1,R: 00010101 ---> 00010100 (changes to 0)
pixel1,G: 01011111 ---> 01011111 (remains the same)
pixel1,B: 10111100 ---> 10111100 (remains the same)
pixel 2,R: 10010001 ---> 10010000 (changes to 0)
pixel 2,G: 00010101 ---> 00010101 (remains the same)
pixel 2,B: 11011100 ---> 11011100 (remains the same)
Si queremos extraer el texto de la imagen, solo miramos el LSB de los nuevos píxeles, obtenemos:
P1 R: 0
P1 G: 1
p1 B: 0
P2 R: 0
P2 G: 1
P2 B: 0
Esta es nuestra fila: 010010