Table des matières
Génération de caractères pseudo-aléatoires
Génération d'entiers pseudo-aléatoires
Source de génération
Exception
Résumé
Maison développement back-end Problème PHP Comment utiliser le générateur de nombres pseudo-aléatoires cryptographiques avec PHP

Comment utiliser le générateur de nombres pseudo-aléatoires cryptographiques avec PHP

May 27, 2021 pm 05:46 PM
php

Cet article vous présentera comment utiliser le générateur de nombres pseudo-aléatoires cryptés en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser le générateur de nombres pseudo-aléatoires cryptographiques avec PHP

Aujourd'hui, nous présenterons le générateur de nombres pseudo-aléatoires cryptés (extension CSPRNG) en PHP . La génération de nombres aléatoires est en fait très simple, il suffit d'utiliser la fonction rand() ou mt_rand(), mais ce dont nous parlons aujourd'hui est un ensemble de générateurs de nombres aléatoires qui utilisent un algorithme plus complexe. rand() n'est plus recommandé. mt_rand() génère plus rapidement et est désormais une fonction courante. La fonction de génération de nombres pseudo-aléatoires cryptés est cryptographiquement sécurisée et légèrement plus lente que mt_rand(). Il doit s'appuyer sur certaines fonctions du système d'exploitation, dont nous parlerons plus tard.

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) "�"��"
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

Apprentissage recommandé : Tutoriel vidéo php

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Journalisation CakePHP Journalisation CakePHP Sep 10, 2024 pm 05:26 PM

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Services CakePHP Services CakePHP Sep 10, 2024 pm 05:26 PM

Ce chapitre traite des informations sur le processus d'authentification disponible dans CakePHP.

See all articles