Шифрование в PNG
Прячет зашифрованный AES-GCM текст или файл в LSB-битах PNG. Пара к stego-detect.
Вшивает короткое сообщение или небольшой файл в младшие биты пикселей PNG с защитой паролем. Парный к stego-detect: на одном прячем, на другом ищем. Криптографическая схема: из пароля выводится 256-битный ключ через PBKDF2-SHA-256 (200 000 итераций, 16-байтовая random соль), payload шифруется AES-256-GCM с 12-байтовым random IV. Без правильного пароля payload нечитаем — даже если злоумышленник знает, что в файле что-то спрятано. Антидетекция: биты НЕ пишутся в первые N пикселей подряд — это сделало бы LSB-карту stego-detect однозначно красноречивой. Вместо этого используется детерминированная перестановка позиций через xoshiro128**-PRNG, инициализированный SHA-256 от соли. Получатель с правильным паролем выводит ту же соль из заголовка и ту же перестановку — payload собирается обратно. Chi-square тест stego-detect на достаточно большой нагрузке всё равно сработает (это математика, не магия), но визуальная LSB-карта будет выглядеть как случайный шум — без буквенных паттернов и геометрии. Контейнер только PNG (JPEG-сохранение затирает LSB после первой же DCT-квантизации). Ёмкость: ~ширина × высота × 3 / 8 байт минус 44-байтовый заголовок и AES-overhead. Для 1080p ≈ 750 КБ чистого payload. Использует Web Crypto API (subtle.deriveKey, subtle.encrypt), без вендоров. Обработка идёт в браузере, ничего не уходит.