Computer Science 15-110, Fall 2009
Class Notes: Steganography
In class today, we explored Steganography (embedding a secret image inside
another, seemingly unmodified image). We followed these steps:
- We start with:
- A black-and-white secret image: (secretImage.bmp)
- An innocent public image (publicImage.bmp)
- We then ran
SteganographyEncoder.java, producing:
- A verified black-and-white version of the secret image (bwSecretImage.bmp)
(Just in case the incoming secret image wasn't in black-and-white, which
is required because we are using only one bit to encode the image
within the public image.)
-
The seemingly-innocent coded version of the public image
(codedImage.bmp) -- compare
this to the original
publicImage.bmp!
- At this point, we would transmit the
codedImage.bmp file with our
encoded message hidden inside it.
- We then ran
SteganographyDecoder.java, which only uses the
codedImage.bmp, yet it produces:
- Our decoded secret message (decodedImage.bmp)
-- compare this to the original
secretImage.bmp!
carpe diem -
carpe diem - carpe diem - carpe diem
- carpe diem - carpe diem -
carpe diem - carpe diem - carpe
diem