La función sodium_crypto_secretbox
en PHP se utiliza para realizar cifrado simétrico de datos, proporcionando una forma segura de proteger información sensible. Este método emplea el algoritmo XSalsa20 para el cifrado y Poly1305 para la autenticación de mensajes, garantizando que los datos sean confidenciales e íntegros.
sodium_crypto_secretbox
?
sodium_crypto_secretbox
cifra datos utilizando una clave secreta compartida entre el remitente y el destinatario, lo que lo hace ideal para escenarios donde ambas partes tienen una relación de confianza previa. Este método también requiere un nonce (número único por operación) para asegurar la unicidad del cifrado.
sodium_crypto_secretbox(string $plaintext, string $nonce, string $key): string
Parámetro | Tipo | Descripción |
---|---|---|
$plaintext
|
string
|
El texto plano que se desea cifrar. |
$nonce
|
string
|
Un valor único de 24 bytes que debe generarse aleatoriamente. |
$key
|
string
|
Una clave secreta de 32 bytes generada previamente. |
La función devuelve una cadena cifrada que incluye el mensaje protegido y autenticado.
A continuación, se muestra cómo utilizar sodium_crypto_secretbox
para cifrar datos:
<?php
// Texto a cifrar
$plaintext = "Información secreta";
// Generar un nonce (debe ser único por mensaje)
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
// Generar una clave secreta (compartida entre las partes)
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
// Cifrar el texto
$ciphertext = sodium_crypto_secretbox($plaintext, $nonce, $key);
echo "Texto cifrado: " . bin2hex($ciphertext);
// El nonce debe transmitirse junto al mensaje para descifrar
<?php
// Descifrar el texto cifrado
$decrypted = sodium_crypto_secretbox_open($ciphertext, $nonce, $key);
if ($decrypted === false) {
echo "Error al descifrar.";
} else {
echo "Texto descifrado: " . $decrypted;
}
?>
Consulta la documentación oficial de Sodium en PHP para más detalles.
Jorge García
Fullstack developer