This project implements a secure message-hiding system using Image Steganography, built using the MERN Stack (MongoDB, Express, Node.js) and Cloudinary for image handling.
The system allows users to securely hide secret text messages inside images using the Least Significant Bit (LSB) technique and can generate a downloadable stego image that visually looks identical to the original. The hidden message can be extracted only using the correct decoding mechanism.
This application demonstrates the concept of digital steganography, where confidential information is hidden inside a digital medium (image) in a way that prevents detection.
Users can:
- 📝 Encode text inside an image
- 🖼️ Download the stego image
- 🔍 Decode hidden messages
- ☁️ Upload images to cloud storage (Cloudinary)
- 📊 Manage stored data via Admin Panel
- 🔐 Hide data instead of just encrypting it
The project uses the Least Significant Bit (LSB) algorithm:
- Every image pixel = 3 color channels (R, G, B)
- Each channel has 8 bits
- The last bit (LSB) of each channel is replaced with message bits
- Human eyes cannot detect the 1-bit change → image looks the same
- Reversing the process extracts the hidden message
Capacity Formula:
Maximum text = (Total Pixels × 3) / 8 characters
- HTML, CSS, JavaScript
- EJS Templates
- Bootstrap for Responsive UI and styling, Tailwind CSS(Home Page)
- Node.js
- Express.js
- Custom LSB Algorithm
- Cloudinary API
- MongoDB Atlas - Cloud Storage
- Multer
- Cloudinary Storage
- Mongoose
This project includes a secure OTP (One-Time Password) email verification system powered by Gmail App Passwords.
- Backend generates a 6-digit OTP.
- OTP is emailed via Gmail SMTP using Nodemailer.
- OTP auto-expires after a short time.
- User is verified only if OTP matches.
- Normal Gmail passwords are blocked by Google for SMTP.
- App Password enables secure backend email sending.
- Works only when 2FA is enabled.
- ✔ Encode Text into Image
- ✔ Decode Hidden Messages
- ✔ Cloud Storage Support
- ✔ Admin Dashboard
- ✔ Error Handling & Validation
| Type | Recommendation |
|---|---|
| Minimum Size | 300×300 px |
| Maximum Size | 1920×1080 px |
| Format | PNG, JPG |
User → Upload Image → Node.js Server
→ LSB Encoder → Generate Stego Image
→ Cloudinary Upload → MongoDB Save
→ Decode → Extract Message
- Tested with 50+ sample images
- Verified pixel-level accuracy
- 100% decode success rate
- Hidden communication
- Email based authentication
- Security for both Encryption and Decryption process.
- Difficult to detect
- Useful for secure transmission
- Secure messaging
- Forensics
- Authentication
- Watermarking
- AES Encryption for added security
- ML-based stego/tamper detection model integration as Middleware layer
- React/Next.js front-end
- Video/audio steganography