Maison >développement back-end >tutoriel php >Comment puis-je crypter et décrypter en toute sécurité des données en PHP à l'aide de Libsodium ?

Comment puis-je crypter et décrypter en toute sécurité des données en PHP à l'aide de Libsodium ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-03 21:23:11646parcourir

How Can I Securely Encrypt and Decrypt Data in PHP Using Libsodium?

Cryptage/Déchiffrement PHP AES

Techniques de cryptage sécurisé en PHP

Cryptage et déchiffrement des données est essentiel pour maintenir la confidentialité des données. Pour un cryptage PHP sécurisé, il est crucial d'utiliser des bibliothèques de cryptage éprouvées et fiables plutôt que de créer vos propres implémentations.

Libsodium for Advanced Encryption

Si possible, envisagez d'installer PECL extensions et en tirant parti de libsodium pour des capacités de chiffrement améliorées. Libsodium fournit des algorithmes cryptographiques robustes, tels que le cryptage authentifié, garantissant une protection contre les attaques de réécriture de bits.

use Sodium\randombytes_buf;
use Sodium\crypto_secretbox;

function safeEncrypt($message, $key)
{
    $nonce = randombytes_buf(CRYPTO_SECRETBOX_NONCEBYTES);
    return base64_encode($nonce . crypto_secretbox($message, $nonce, $key));
}

function safeDecrypt($encrypted, $key)
{
    $decoded = base64_decode($encrypted);
    $nonce = substr($decoded, 0, CRYPTO_SECRETBOX_NONCEBYTES, '8bit');
    $ciphertext = substr($decoded, CRYPTO_SECRETBOX_NONCEBYTES, null, '8bit');
    return crypto_secretbox_open($ciphertext, $nonce, $key);
}

$key = randombytes_buf(CRYPTO_SECRETBOX_KEYBYTES);
$message = '...';

$ciphertext = safeEncrypt($message, $key);
$plaintext = safeDecrypt($ciphertext, $key);

var_dump($ciphertext);
var_dump($plaintext);

Halite pour les cookies cryptés

Pour les cookies cryptés alimentés par libsodium , pensez à utiliser la bibliothèque Halite de Paragon Initiative Enterprises, qui simplifie l'intégration processus.

Bonnes pratiques

Suivez ces bonnes pratiques pour un cryptage sécurisé :

  • Utilisez un algorithme de cryptage puissant comme AES-256, authentifié chiffrement avec des données supplémentaires (AEAD), ou ChaCha20.
  • Générer des clés non déterministes à l'aide d'un chiffrement cryptographique générateur de nombres pseudo-aléatoires sécurisé (CSPRNG).
  • Assurez-vous que la clé n'est pas compromise ou rendue accessible à des personnes involontaires.
  • Stockez les données cryptées de manière sécurisée, en les rendant résistantes aux violations de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn