È possibile nascondere file in altri file. Per le immagini è possibile utilizzare i bit meno significativi di una definizione di pixel RGB.
Un pixel ha 3 byte che definiscono il suo colore. Light Sea Green è definito da: 32.178.170 (R, G, B)
Questo si traduce in binario: 00100000,10101100,10101010
Quando cambiamo l'ultimo bit di questi, il colore in un'immagine non cambia in modo significativo. Pertanto, possiamo utilizzare il bit meno significativo di ogni valore di colore del pixel. Questo ci dà 3 bit per pixel che possiamo usare.
Quindi prendi un testo, convertilo nella sua rappresentazione binaria e poi scrivi un algoritmo che modifica l'LSB di ogni valore R, G e B nell'immagine al bit di quel testo. Se hai un testo lungo 128 bit, avrai bisogno di 128/3 pixel per nascondere quel testo.
Diciamo che ho un testo la cui rappresentazione binaria è:
01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001 00100000
Questo testo ha una lunghezza di 13 byte, ovvero 13 * 8 = 104 bit. Sappiamo di poter nascondere fino a 3 bit in un pixel, quindi 104/3 = 34.666, quindi abbiamo bisogno di 35 pixel.
Quindi, se abbiamo un'immagine, useremo i primi 35 pixel. Per mostrarti come funziona, darò un esempio con due pixel. Possiamo nascondere 6 bit, i primi sei bit del nostro testo sono 010010
I nostri pixel sono:
pixel1,R: 00010101
pixel1,G: 01011111
pixel1,B: 10111100
pixel 2,R: 10010001
pixel 2,G: 00010101
pixel 2,B: 11011100
Ora possiamo solo cambiare l'ultimo bit per ogni valore di colore nel bit rappresentativo del testo:
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)
Se vogliamo estrarre il testo dall'immagine, guardiamo l'LSB dei nuovi pixel, otteniamo:
P1 R: 0
P1 G: 1
p1 B: 0
P2 R: 0
P2 G: 1
P2 B: 0
Questa è la nostra riga: 010010