En PHP, le cryptage et le décryptage d'une chaîne de caractères est possible en utilisant une des extensions de cryptographie appelée fonction OpenSSL pour le cryptage et le décryptage.
Fonction openssl_encrypt() : La fonction openssl_encrypt() est utilisée pour crypter les données.
La syntaxe est la suivante :
string openssl_encrypt( string $data, string $method, string $key, $options = 0, string $iv, string $tag= NULL, string $aad, int $tag_length = 16 )
Les paramètres sont les suivants :
$data : Il contient la chaîne ou les données qui doivent être cryptées.
$method : La méthode de chiffrement est adoptée à l'aide de la fonction openssl_get_cipher_methods().
Clé : Il contient la clé de cryptage.
$options : Il contient la disjonction bit à bit des indicateurs OPENSSL_RAW_DATA et OPENSSL_ZERO_PADDING.
$iv : Il contient le vecteur d'initialisation qui n'est pas NULL.
$tag : Il contient la balise d'authentification qui est passée par référence lors de l'utilisation du mode de chiffrement AEAD (GCM ou CCM).
$aad : Il contient les données d'authentification supplémentaires.
$tag_length : Il contient la longueur de la balise d'authentification. La longueur de la balise d'authentification est comprise entre 4 et 16 pour le mode GCM.
Valeur de retour : Il renvoie la chaîne cryptée en cas de succès ou FALSE en cas d'échec.
Fonction openssl_decrypt() La fonction openssl_decrypt() est utilisée pour décrypter les données.
La syntaxe est la suivante :
string openssl_decrypt( string $data, string $method, string $key, int $options = 0, string $iv, string $tag, string $aad)
Les paramètres sont les suivants :
$data : Il contient la chaîne ou les données qui doivent être cryptées.
$method : La méthode de chiffrement est adoptée à l'aide de la fonction openssl_get_cipher_methods().
Clé : Il contient la clé de cryptage.
$options : Il contient la disjonction bit à bit des indicateurs OPENSSL_RAW_DATA et OPENSSL_ZERO_PADDING.
$iv : Il contient le vecteur d'initialisation qui n'est pas NULL.
$tag : Il contient la balise d'authentification utilisant le mode de chiffrement AEAD (GCM ou CCM). Lorsque l'authentification échoue, openssl_decrypt() renvoie FALSE.
$aad : Il contient les données d'authentification supplémentaires.
Valeur de retour : Il renvoie la chaîne décryptée en cas de succès ou FALSE en cas d'échec.
Approche : Tout d'abord, déclarer une chaîne de caractères et la stocker dans une variable, puis utiliser la fonction openssl_encrypt() pour crypter la chaîne donnée et utiliser la fonction openssl_decrypt() pour la décrypter.
Vous pouvez trouver les exemples à l'adresse suivante : https://www.geeksforgeeks.org/how-to-encrypt-and-decrypt-a-php-string/
43 votes
@Rogue Il ne veut pas de hachage, il veut un cryptage symétrique (comme AES), mais il ne sait pas comment ça s'appelle. (Et maintenant il le sait :) )
0 votes
Quelle doit être la sécurité ?
3 votes
@, Vous ne faites pas de cryptage symétrique "salé", vous utilisez une clé. Une clé doit être gardée secrète. Un sel peut être public sans nuire à la sécurité (tant que le sel de chacun est différent), et c'est un terme utilisé dans le hachage des mots de passe.
2 votes
Vous avez besoin d'un Salt (clé privée), d'une clé publique et d'un algorithme de cryptage comme AES-256 : wpy.me/blog/15-encrypt-and-decrypt-data-in-php-using-aes-256
8 votes
@CristianFlorea L'auteur de cet article de blog utilise des termes qui n'ont tout simplement pas le moindre sens dans le contexte du cryptage symétrique. Il n'y a pas de clé publique avec AES, ni de sel. Il n'y a qu'une seule clé, qui doit être gardée secrète. Dans certains modes de fonctionnement, il existe un IV qui n'a pas besoin d'être secret, mais un IV n'est pas un sel (selon le mode, il peut avoir des exigences très différentes) et n'a pas besoin d'être secret, tandis que la clé de cryptage réelle ne peut absolument pas être publique. La clé publique/privée s'applique à la cryptographie asymétrique, mais n'a rien à voir avec AES.