Child note of ideas/jpeg-obscura/project-index.
~/py/jpeg-obscura
All in src/jpeg_obscura/:
python3 test_integration.py — Core mechanics test
python3 demo_scramble_restore.py — End-to-end workflow
test1.jpg — Original photo (3840×2160)
demo_detailed_scrambled.jpg — Scrambled version
demo_detailed_restored.jpg — Restored version
demo_comparison_strip.png — Visual proof (before/after)
Pixel domain (v0.5): Pillow + NumPy only
Exact in-memory: Permutation is mathematically invertible
Lossy encode/decode: JPEG re-encoding unavoidable in v0.5
Deterministic stream: HMAC-SHA256 for reproducibility
Metadata in APP15: Embedded in JPEG (v1+); sidecar for v0.5
Not secure: Permutation-only (v0.5); diffusion added in v1
Metadata-dependent: Needs salt + region geometry to restore
No resizing recovery: Changing dimensions breaks decoding
Add keyed value-diffusion (first security milestone)
Estimated: +0.25 days of effort
Published test vectors for validation
Project index: ideas/jpeg-obscura/project-index
Implementation status: ideas/jpeg-obscura/v0.5-implementation
Test results: ideas/jpeg-obscura/test-results
Core design: ideas/jpeg-region-scrambling
v0.5 spec: ideas/jpeg-region-scrambling-v0.5-design