petrknap / crypto-sodium
Crypto Sodium
Fund package maintenance!
Other
Requires
- php: >=8.1
- ext-mbstring: *
- ext-sodium: *
- petrknap/binary: ^4.1
- petrknap/optional: ^3.1
- petrknap/shorts: ^2.1
Requires (Dev)
- nunomaduro/phpinsights: ^2.11
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.7
This package is auto-updated.
Last update: 2024-10-29 16:14:08 UTC
README
A simple library that packages functional sodium_crypt_*
into objects.
Inputs and outputs are binary data, don't be afraid to use the petrknap/binary
.
Examples
Symmetric block encryption
use PetrKnap\CryptoSodium\SecretBox; $secretBox = new SecretBox(); $message = 'Hello World!'; $key = $secretBox->generateKey(); $ciphertext = $secretBox->encrypt($message, $key); echo $secretBox->decrypt($ciphertext, $key); $secretBox->eraseData($key);
Asymmetric block encryption
use PetrKnap\CryptoSodium\Box; $box = new Box(); $message = 'Hello World!'; $keyPair = $box->generateKeyPair(); $ciphertext = $box->encrypt($message, $keyPair); echo $box->decrypt($ciphertext, $keyPair); $box->eraseData($keyPair);
Symmetric stream encryption
use PetrKnap\CryptoSodium\SecretStream\XChaCha20Poly1305; $xChaCha20Poly1305 = new XChaCha20Poly1305(); $messageChunk1 = 'Hello '; $messageChunk2 = 'World!'; $key = $xChaCha20Poly1305->generateKey(); $pushStream = $xChaCha20Poly1305->initPush($key); $ciphertextHeader = $pushStream->header; $ciphertextChunk1 = $pushStream->push($messageChunk1); $ciphertextChunk2 = $pushStream->push($messageChunk2, tag: XChaCha20Poly1305::TAG_FINAL); $pullStream = $xChaCha20Poly1305->initPull($ciphertextHeader, $key); echo $pullStream->pull($ciphertextChunk1); echo $pullStream->pull($ciphertextChunk2); $xChaCha20Poly1305->eraseData($key);
Symmetric block encryption with additional data
use PetrKnap\CryptoSodium\Aead\Aes256Gcm; $aes256Gcm = new Aes256Gcm(); $message = 'Hello World!'; $purpose = 'example'; $key = $aes256Gcm->generateKey(); $ciphertext = $aes256Gcm->encrypt($message, $key, additionalData: $purpose); echo $aes256Gcm->decrypt($ciphertext, $key, additionalData: $purpose); $aes256Gcm->eraseData($key);
Run composer require petrknap/crypto-sodium
to install it.
You can support this project via donation.
The project is licensed under the terms of the LGPL-3.0-or-later
.