Comment chiffrer et déchiffrer une chaîne en PHP ?

Comment Chiffrer Et Dechiffrer Une Chaine En Php



Chiffrement est le processus de conversion des données en un code secret ou un format qui n'est pas compréhensible pour quiconque n'a pas la clé pour le décoder. Décryptage est la procédure pour prendre ces informations et les restituer à leur format d'origine lisible. En PHP, chiffrement, et décryptage peut être utilisé pour protéger les données sensibles, telles que les mots de passe, les informations de carte de crédit et d'autres données personnelles.

Le chiffrement L'algorithme doit accepter une chaîne de données que vous souhaitez chiffrer et utiliser la méthode de chiffrement choisie pour chiffrer les données. L'algorithme doit ensuite renvoyer les données cryptées dans un format que vous pouvez stocker dans une base de données ou un fichier.

Pour décrypter les données, vous devez utiliser la même méthode de chiffrement pour déchiffrer les données qui ont été utilisées pour les chiffrer. Cela signifie que vous devrez stocker la clé quelque part afin de pouvoir l'utiliser pour décoder les données ultérieurement.







Comment chiffrer et déchiffrer une chaîne PHP ?

Une chaîne PHP peut être crypté et déchiffré en utilisant le openssl_encrpyt() et openssl_decrypt() méthodes, respectivement.



Chiffrer une chaîne à l'aide de la fonction openssl_encrypt()

Pour chiffrer une chaîne en PHP en utilisant le openssl_encrypt() fonction, vous devez fournir la chaîne de texte en clair, la méthode de chiffrement et une clé. La fonction renverra les données cryptées, que vous pourrez ensuite stocker ou transmettre en toute sécurité.



La syntaxe de openssl_encrypt() la méthode est :





chaîne openssl_encrypt ( chaîne $données , chaîne $méthode , chaîne clé $ , $options = 0 , chaîne $iv , chaîne $tag = NUL , chaîne $ vous , entier $tag_length = 16 )
  • $données : La chaîne ou les données que vous souhaitez chiffrer.
  • $méthode : La méthode de cryptage ou le chiffrement que vous souhaitez utiliser. Vous pouvez obtenir une liste des méthodes de chiffrement prises en charge en utilisant le openssl_get_cipher_methods()
  • clé $ : La clé de chiffrement qui sera utilisée pour chiffrer les données. Il doit s'agir d'une chaîne de longueur et de caractère aléatoire appropriés, en fonction de la méthode de chiffrement choisie.
  • $options : Un paramètre facultatif qui peut inclure des indicateurs supplémentaires pour des options de chiffrement spécifiques. Vous pouvez combiner des drapeaux en utilisant le OU au niveau du bit (|) Les drapeaux communs incluent OPENSSL_RAW_DATA et OPENSSL_ZERO_PADDING .
  • $iv : Le vecteur d'initialisation (iv) utilisé pour le chiffrement ; il doit s'agir d'une valeur aléatoire et unique, fournie sous forme de chaîne.
  • balise $ : Paramètre facultatif utilisé pour les modes de chiffrement AEAD (Authenticated Encryption with Associated Data), tels que GCM (Galois/Counter Mode) ou CCM (Counter with CBC-MAC). Il stocke la balise d'authentification générée lors du chiffrement.
  • Ton: Données authentifiées supplémentaires pouvant être utilisées pour les modes de chiffrement AEAD.
  • $tag_length : La longueur de la balise d'authentification. Pour le mode GCM, la longueur de la balise varie de 4 à 16 octets.

Par exemple:


$chaîne_simple = 'Bienvenue sur Linuxhint \n ' ;
écho « Chaîne d'origine : » . $chaîne_simple ;
$chiffrement = 'AES-128-CTR' ;
$iv_length = openssl_cipher_iv_length ( $chiffrement ) ;
$options = 0 ;
$encryption_iv = '1234567891011121' ;
$encryption_key = 'Linux' ;
$cryptage = openssl_encrypt ( $chaîne_simple , $chiffrement ,
$encryption_key , $options , $encryption_iv ) ;
écho 'Chaîne chiffrée : ' . $cryptage . ' \n ' ;
?>

Le code déclare d'abord le texte de base 'Bienvenue sur Linuxhint' et utilise la commande echo pour l'afficher. Ensuite, il précise l'algorithme de chiffrement à utiliser, AES-128-CTR . Il utilise également le openssl_cipher_iv_length() fonction pour calculer la taille de vecteur d'initialisation (IV) nécessaire pour ce chiffrement.



Le code définit le cryptage iv valeur à ‘1234567891011121’ et la clé de cryptage pour 'Linux' . La chaîne cryptée est ensuite affichée à l'aide de la commande echo une fois le cryptage terminé à l'aide de la openssl_encrypt() fonction. En raison du vecteur d'initialisation aléatoire utilisé pour le chiffrement, la chaîne chiffrée finale variera à chaque fois.

Déchiffrer une chaîne à l'aide de la fonction openssl_decrypt()

Pour déchiffrer une chaîne en PHP, vous pouvez utiliser le openssl_decrypt() fonction. Cette fonction prend les données cryptées, la méthode de cryptage et la clé comme entrées et renvoie le texte en clair décrypté.

La syntaxe de openssl_decrypt() la méthode est :

chaîne openssl_decrypt ( chaîne $données , chaîne $méthode , chaîne clé $ , entier $options = 0 , chaîne $iv , chaîne $tag , chaîne $ vous )

Les arguments passés à la fonction sont :

  • $données : La chaîne chiffrée ou les données que vous souhaitez déchiffrer.
  • $méthode : Méthode de cryptage ou chiffrement utilisé lors du cryptage. Vous pouvez obtenir une liste des méthodes de chiffrement prises en charge en utilisant le openssl_get_cipher_methods()
  • clé $ : La clé de chiffrement qui a été utilisée pour chiffrer les données. Elle doit correspondre à la clé utilisée lors du chiffrement.
  • $options : Un paramètre facultatif qui peut inclure des indicateurs supplémentaires pour des options de déchiffrement spécifiques. Vous pouvez combiner des indicateurs à l'aide de l'opérateur OR au niveau du bit (|). Les drapeaux communs incluent OPENSSL_RAW_DATA et OPENSSL_ZERO_PADDING .
  • $iv : Le vecteur d'initialisation (IV) utilisé lors du cryptage. Il doit s'agir du même IV que celui utilisé lors du chiffrement et transmis sous forme de chaîne.
  • balise $ : La balise d'authentification pour les modes de chiffrement AEAD (Authenticated Encryption with Associated Data), tels que GCM (Galois/Counter Mode) ou CCM (Counter with CBC-MAC). Si l'authentification échoue, openssl_decrypt() renverra FALSE.
  • Ton: Données authentifiées supplémentaires utilisées lors du chiffrement pour les modes de chiffrement AEAD.

Valeur de retour : En cas de succès, il renvoie la chaîne déchiffrée ; sinon, elle renvoie FALSE.

Par exemple:


$chaîne_cryptée = 'rKaeYsYaNjkVbRPmJizrdX0xutLE' ;
écho 'Chaîne chiffrée : ' . $chaîne_cryptée . ' \n ' ;
$décryptage_iv = '1234567891011121' ;
$chiffrement = 'AES-128-CTR' ;
$options = 0 ;
$decryption_key = 'Linux' ;
$déchiffrement = ouvressl_decrypt ( $chaîne_cryptée , $chiffrement ,
$decryption_key , $options , $décryptage_iv ) ;
écho 'Chaîne déchiffrée : ' . $déchiffrement ;
?>

La longueur du vecteur dans ce code est calculée à l'aide de la openssl_cipher_iv_length() fonction, et les mêmes paramètres de cryptage iv et de clé sont utilisés pendant le cryptage. L'algorithme de chiffrement est défini comme AES-128-CTR .

La chaîne précédemment chiffrée est déchiffrée à l'aide de l'algorithme de chiffrement, de la clé de chiffrement, des paramètres et des valeurs IV par le openssl_decrypt() fonction. Le texte décrypté résultant est ensuite affiché à l'aide de la commande echo.

Conclusion

La création de sites Web implique souvent cryptage et décryptage données. En utilisant le cryptage pour protéger les données sensibles, vous pouvez éviter d'exposer vos utilisateurs au vol d'identité, à la fraude et à d'autres menaces de sécurité. Les chaînes en PHP peuvent être chiffrées et déchiffrées par les fonctions openssl_encrypt() et openssl_decrypt() les fonctions. En utilisant soigneusement l'algorithme et la clé de chiffrement, vous pouvez créer un système robuste et sécurisé pour gérer les données sensibles dans vos applications PHP.