Embed invisible messages inside ordinary images using Least Significant Bit encoding. No one can tell the image has a secret โ until they decode it.
Encode secret messages into images or decode hidden messages from them
Drop image here or browse
PNG, JPG, BMP supportedDrop encoded image here or browse
Must be a StegaCrypt encoded PNGUpload an encoded image to reveal its hidden message
The magic behind LSB Steganography explained
Your secret message is converted into binary (0s and 1s). Each character becomes 8 bits using ASCII encoding.
"Hi" โ 01001000 01101001
Each pixel has RGB values (0-255). In binary, each value is 8 bits. The last bit (LSB) is nearly invisible to the eye.
R: 11010110 โ 214G: 10110001 โ 177B: 01001110 โ 78
We replace the last bit of each color channel with one bit of our message. The color changes by at most ยฑ1 โ completely invisible!
R: 11010010 โ 213G: 10110101 โ 178B: 01001010 โ 77
The encoded image looks identical to the original. To decode, we simply read the LSBs back and reconstruct the message.
LSBs: 0,1,0... โ "Hi" ๐
Every line demonstrates fundamental Java principles
Classes, Objects, Encapsulation, Inheritance, Polymorphism, Abstraction โ all demonstrated through the engine architecture.
Reading and writing images using javax.imageio.ImageIO, BufferedImage, and Java's I/O streams.
AND, OR, XOR, shift operators to extract and modify individual bits within pixel RGB values.
Custom StegoException class extending Exception, with try-catch-finally blocks throughout.
ArrayList for storing pixel data, HashMap for encoding statistics and metadata tracking.
JFrame, JPanel, JButton, JFileChooser, JTextArea โ full desktop GUI with event listeners.
SwingWorker for background encoding/decoding without freezing the GUI thread.
SteganographyEngine interface with encode() and decode() โ enabling polymorphism and future extensibility.