Skip to content

mozhdehtanha/php-crypto-sodium

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto Sodium

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);

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.

About

A simple library that packages functional `sodium_crypt_*` into objects.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 96.9%
  • Dockerfile 3.1%