Using Libsodium in PHP Projects

A guide to using the libsodium PHP extension for modern, secure, and fast cryptography. Open Source.

Quick Start Guide

After successfully installing the libsodium PHP extension, you can immediately begin using it to develop secure web applications.

Which Tool to Use, for Which Purpose

Deciding which libsodium feature to use for a given purpose is relatively straightforward, provided you keep these guidelines in mind:

  • Prioritize the basic features (e.g. crypto_box and crypto_secretbox) over advanced features (e.g. crypto_stream_xor).
  • If a more appropriate feature exists (e.g. crypto_pwhash_* instead of crypto_generichash), don't use a less appropriate one.
  • Avoid deploying or publishing your own cryptographic constructions (e.g. generally, you should use crypto_secretbox instead of crypto_stream_xor then crypto_auth).

Libsodium Functions

This is a comprehensive list of all the functions available in the libsodium PHP extension.

Libsodium Constants

Constant Value
\Sodium\CRYPTO_AEAD_AES256GCM_KEYBYTES 32
\Sodium\CRYPTO_AEAD_AES256GCM_NSECBYTES 0
\Sodium\CRYPTO_AEAD_AES256GCM_NPUBBYTES 12
\Sodium\CRYPTO_AEAD_AES256GCM_ABYTES 16
\Sodium\CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES 32
\Sodium\CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES 0
\Sodium\CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES 8
\Sodium\CRYPTO_AEAD_CHACHA20POLY1305_ABYTES 16
\Sodium\CRYPTO_AUTH_BYTES 32
\Sodium\CRYPTO_AUTH_KEYBYTES 32
\Sodium\CRYPTO_BOX_SEALBYTES 16
\Sodium\CRYPTO_BOX_SECRETKEYBYTES 32
\Sodium\CRYPTO_BOX_PUBLICKEYBYTES 32
\Sodium\CRYPTO_BOX_KEYPAIRBYTES 64
\Sodium\CRYPTO_BOX_MACBYTES 16
\Sodium\CRYPTO_BOX_NONCEBYTES 24
\Sodium\CRYPTO_BOX_SEEDBYTES 32
\Sodium\CRYPTO_KX_BYTES 32
\Sodium\CRYPTO_KX_PUBLICKEYBYTES 32
\Sodium\CRYPTO_KX_SECRETKEYBYTES 32
\Sodium\CRYPTO_GENERICHASH_BYTES 32
\Sodium\CRYPTO_GENERICHASH_BYTES_MIN 16
\Sodium\CRYPTO_GENERICHASH_BYTES_MAX 64
\Sodium\CRYPTO_GENERICHASH_KEYBYTES 32
\Sodium\CRYPTO_GENERICHASH_KEYBYTES_MIN 16
\Sodium\CRYPTO_GENERICHASH_KEYBYTES_MAX 64
\Sodium\CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES 32
\Sodium\CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX $7$
\Sodium\CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE 534288
\Sodium\CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE 16777216
\Sodium\CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE 33554432
\Sodium\CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE 1073741824
\Sodium\CRYPTO_SCALARMULT_BYTES 32
\Sodium\CRYPTO_SCALARMULT_SCALARBYTES 32
\Sodium\CRYPTO_SHORTHASH_BYTES 8
\Sodium\CRYPTO_SHORTHASH_KEYBYTES 16
\Sodium\CRYPTO_SECRETBOX_KEYBYTES 32
\Sodium\CRYPTO_SECRETBOX_MACBYTES 16
\Sodium\CRYPTO_SECRETBOX_NONCEBYTES 24
\Sodium\CRYPTO_SIGN_BYTES 64
\Sodium\CRYPTO_SIGN_SEEDBYTES 32
\Sodium\CRYPTO_SIGN_PUBLICKEYBYTES 32
\Sodium\CRYPTO_SIGN_SECRETKEYBYTES 64
\Sodium\CRYPTO_SIGN_KEYPAIRBYTES 96
\Sodium\CRYPTO_STREAM_KEYBYTES 32
\Sodium\CRYPTO_STREAM_NONCEBYTES 24