nauman_sergey / whatsapp-stream-encryptor
PSR-7 декораторы для шифрования и дешифрования WhatsApp
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/nauman_sergey/whatsapp-stream-encryptor
Requires
- php: >=7.4
- guzzlehttp/psr7: ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^9.6
This package is not auto-updated.
Last update: 2026-01-10 14:06:15 UTC
README
PSR-7 декораторы для шифрования и дешифрования WhatsApp, генерация sidecar для стриминга.
Возможности
- Шифрование и дешифрование медиафайлов WhatsApp (IMAGE, VIDEO, AUDIO, DOCUMENT)
- Генерация sidecar-файлов для стриминга (поддержка WhatsApp-совместимого формата)
⚠️ Предупреждение: sidecar нестабилен Генерация sidecar-файла реализована, но результат не совпадаает с оригиналом, ожидаемым WhatsApp. В следствие чего тест связанный с sidecar не проходит.
Установка
composer require nauman_sergey/whatsapp-stream-encryptor
Использование
Генерация ключей
use Sergey\WhatsappStreamEncryptor\MediaKeyGenerator; $mediaKey = random_bytes(32); $keys = MediaKeyGenerator::generateMediaKey('sha256', $mediaKey, 112, 'WhatsApp Image Keys'); $iv = $keys['iv']; $cipherKey = $keys['cipherKey']; $macKey = $keys['macKey'];
Шифрование
use Sergey\WhatsappStreamEncryptor\Encrypt; use GuzzleHttp\Psr7\Utils; $data = file_get_contents('input.jpg'); $encryptor = new Encrypt(Utils::streamFor(''), $cipherKey, $iv); $encryptedWithMac = $encryptor->encryptAndGetMac($data, $macKey); file_put_contents('output.encrypted', $encryptedWithMac);
Дешифрование
use Sergey\WhatsappStreamEncryptor\Decrypt; $encrypted = file_get_contents('output.encrypted'); $encryptedStream = Utils::streamFor($encrypted); $decryptor = new Decrypt($encryptedStream, $cipherKey, $iv, $macKey); $decrypted = $decryptor->getContents(); file_put_contents('output.decrypted.jpg', $decrypted);
Генерация sidecar для стриминга
use Sergey\WhatsappStreamEncryptor\SidecarGenerator; $stream = Utils::streamFor(file_get_contents('output.encrypted')); $sidecar = SidecarGenerator::generate($stream, $iv, $macKey); file_put_contents('output.sidecar', $sidecar);
Тестирование
composer install
composer require --dev phpunit/phpunit
cd vendor/nauman_sergey/whatsapp-stream-encryptor
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests/
Структура проекта
src/— исходный код библиотекиtests/— модульные тесты (PHPUnit)samples/— тестовые файлы (оригиналы, ключи, зашифрованные, sidecar)
Пример HKDF info для разных типов
| Тип медиа | Info-строка для HKDF |
|---|---|
| IMAGE | WhatsApp Image Keys |
| VIDEO | WhatsApp Video Keys |
| AUDIO | WhatsApp Audio Keys |
| DOCUMENT | WhatsApp Document Keys |
Лицензия
MIT