Steganography is information hiding in some carrier "artifact", such as an image or audio file. Typically, one modulates the bits in the carrier file to encode "secret" bits. With JPEG, that's difficult because the algorithm changes the RGB-pixel values during compression.
Atrium works with JPEGs by reproducing the algorithm's compression and encoding the secret bits after the lossy operation. This enables the secret bits to survive the encoding and decoding process that the RGB pixels undergo.
The results are decent: the file size increases roughly 2-3KB for a 30-character message, and the visual effect is negligible. Here's an example input image on the left and the image on the right with the encoded phrase, "Hello, atrium."
|Input Image||Encoded Image|
Checkout the GitHub project to get the code and give it a spin.
Most of my work at Curalate focuses on improving the reliability and latency of our back-end micro-services infrastructure. We embrace Steve Yegge's famous everything-is-a-service model. Like any start-up, we try to build our services while balancing: