A lightweight C++ utility to compress and decompress files using zlib.
Preserves original file extension in the binary-payload, adds integrity check via CRC32, and anonymizes stored/compressed data using salted SHA-256 hashing.
PackerX/
├── compressor.cpp # Compression logic
├── decompressor.cpp # Decompression + CRC verifier
├── compressed_output/ # Compressed .bin files (hashed names)
├── decompressed_output/ # Recovered files
├── input_files/ # Original raw files
└── README.md # This documentation
Ensure you have a C++17-compatible compiler.
zlib and OpenSSL installed (libssl-dev on Ubuntu / brew install openssl on macOS)
- Clone the repository.
- Compile the program using your C++ compiler, linking against the zlib library.
g++ -std=c++17 -o packerx compressor.cpp -lz -lssl -lcrypto
g++ -std=c++17 -o unpackerx decompressor.cpp -lz -lssl -lcrypto- Run the compiled program with the file name you want to compress or decompress using command line.
./packerx input_files/example.txt
./unpackerx input_files/example.txt- Compressed file would be saved in folder
compressed_output, while decompressed file would be saved in folderdecompresssed_output.
Compression complete.
Output: compressed_output/f5889fad896cf23c5cc4a9091c9deccd17e39b3ee1fac4cf91b92042328b6cf4.bin
SHA-256 (salted): f5889fad896cf23c5cc4a9091c9deccd17e39b3ee1fac4cf91b92042328b6cf4
Extension embedded: .pdf
CRC32: 0x3E645559
Original size: 4285949 bytes
Compressed size (+meta): 3793879 bytesIf file is untampered: Result format in terminal.
Debug --> Actual CRC32: 1046762841, Extracted CRC32: 1046762841
Decompression successful!
Restored file: decompressed_output/Strategy_Insights_References_restored.pdf
Extension: .pdf
Size: 4285949 bytesIf file is corrupted/tampered: Result format in terminal.
CRC32 check FAILED. File may be corrupted.-
Deterministic File Hashing
Uses salted SHA-256 64 hex character hash of original filename for consistent and reversible file identification. -
Extension-Preserving Compression
Stores file extension metadata in compressed output, allowing accurate restoration of the original format. -
CRC32 Checksum Validation
Adds a CRC32 checksum for integrity verification during decompression to detect tampered or corrupted files. -
Organized Directory Output
Compressed files saved incompressed_output/, decompressed files restored todecompressed_output/. -
Robust Compression Logic
Useszlibfor efficient compression; handles empty files, memory errors, and corrupted inputs gracefully.
- Create an NPM package for easy integration in web apps.
- Automatically upload compressed files to cloud storage.
- Enable file recovery using a unique hashed ID.
- Support batch compression of multiple files.
- Add password protection for secure file access.