Cette extension de chiffrement a été intégrée à PHP7 et ne nécessite pas d'installation particulière. S'il s'agit d'une version inférieure à PHP7, vous devez installer l'extension indépendamment. Si vous ne trouvez pas les fonctions décrites ci-dessous lors du test, vérifiez votre version actuelle de PHP.
Génération de caractères pseudo-aléatoires
var_dump(bin2hex(random_bytes(5))); // string(10) "f28dc2bdd5" var_dump(random_bytes(5)); // string(5) "�"��"
random_bytes() Chaque appel générera une chaîne binaire avec un contenu différent, et le paramètre est la longueur de l'octet binaire. Les données binaires obtenues directement sont dans un format tronqué, nous devons donc généralement utiliser bin2hex() pour convertir le binaire en une chaîne au format hexadécimal que nous pouvons comprendre. Cependant, le résultat est que la longueur des caractères hexadécimaux après notre conversion est le double de la longueur des caractères que nous avons définie. La fonction de cette fonction peut générer pour nous un sel de mot de passe utilisateur sécurisé, un mot-clé clé ou un vecteur d'initialisation.
random_bytes() générera une chaîne avec un contenu différent à chaque appel, et le paramètre est un caractère aléatoire de longueur de caractère. Ici, nous passons 5 et renvoyons 10 caractères. Le nombre de caractères, et ce qui est renvoyé est en fait le nombre d'octets, correspondant au formulaire de retour dans lequel un caractère occupe deux octets. Ou nous pouvons simplement nous rappeler qu'il renvoie deux fois les paramètres. Quant au rôle de cette fonction, elle peut générer pour nous un sel de mot de passe utilisateur sécurisé, un mot-clé clé ou un vecteur d'initialisation.
Génération d'entiers pseudo-aléatoires
var_dump(random_int(100, 999)); var_dump(random_int(-1000, 0)); // int(900) // int(-791)
Pour la génération de nombres entiers, c'est encore plus simple. Fournissez simplement deux paramètres pour la fonction random_int(), qui est la plage d'entiers aléatoires. En fait, l'utilisation est la même que celle de mt_rand().
Source de génération
Les sources de génération des deux fonctions pseudo-aléatoires chiffrées ci-dessus dépendent du système d'exploitation, comme suit :
Sous Windows Systems , la fonction CryptGenRandom() sera utilisée. À partir de la version 7.2.0, lors de l'utilisation de CNG-API
dans le système Linux, l'appel système Linux getrandom(2) sera utilisé
dans d'autres systèmes, /dev/urandom
Sinon, une exception sera levée
Exception
Ces deux fonctions ont également Des situations anormales correspondantes se produiront.Par exemple, si la source de génération ne peut pas être trouvée ci-dessus, une exception sera levée. Bien sûr, en plus de cela, il y aura également d'autres facteurs qui provoqueront également des exceptions.
Si aucune source aléatoire appropriée n'est trouvée, une exception sera levée
Si l'argument donné n'est pas valide, une TypeError sera levée
Si la longueur d'octet donnée n'est pas valide, une erreur sera générée
Résumé
Le contenu d'aujourd'hui est très simple et également trouvé Avec l'utilisation instantanée de la fonction random_bytes(), vous n'avez plus besoin d'écrire vous-même une fonction pour générer du sel de manière aléatoire. Tout comme dans notre article sur le salage de mot de passe, qu'est-ce que "saler" un mot de passe ? Comment « saler » en toute sécurité vos mots de passe utilisateur ? La fonction de génération de caractères aléatoires (generateSalt) peut en principe être remplacée par ceci. Ne sentez-vous pas que vous avez beaucoup gagné ? Le rythme de l’apprentissage ne s’arrête jamais. Continuons à explorer ensemble des contenus plus intéressants ! !
Code de test :
https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84%E5%8A%A0%E5%AF%86%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8%E7%9A%84%E4%BD%BF%E7%94%A8.php
Apprentissage recommandé : Tutoriel vidéo php