This project was
created on 07/22/2014
and last updated a year ago.
This is meant to be an instructional write-up to touch on some common ideas and mechanisms in cryptography, and leverage them to make a reasonable steganographic program.
Full documentation and a usable demo page are at the link to my blog.
- AES-256 encrypted with optional BZ2 compression.
- Multi-round password hashing to derive key material from passwords.
- No predictable patterns to search for. Offset is derived from the
password, and the stride between pixels is arhythmic, with a seed value
derived from the password.
- Each color is treated as a discrete channel, with messages able to
span channels. This allows up to three independent messages to be
overlaid on the same carrier, or one message can occupy multiple
- Option for automatic re-scaling of the carrier image to minimize waste.
- All relevant parameters are derived from the key, or stored as
discrete bits, allowing for simple decoding. Just supply a carrier image
and a correct password.
- MD5 integrity verification.
- File storage and retrieval
- Built-in trivial logging faculty.