Maison > développement back-end > tutoriel php > Comment puis-je générer des chaînes alphanumériques aléatoires sécurisées en PHP ?

Comment puis-je générer des chaînes alphanumériques aléatoires sécurisées en PHP ?

DDD
Libérer: 2025-01-01 06:15:11
original
748 Les gens l'ont consulté

How Can I Generate Secure Random Alphanumeric Strings in PHP?

Génération de chaînes alphanumériques aléatoires et uniques

Dans diverses applications, telles que les liens de vérification de compte, il est crucial de générer des chaînes uniques et aléatoires composées de chiffres et lettres. Voici comment y parvenir en PHP :

PHP 7

PHP 7 introduit la fonction random_bytes($length) pour fournir des octets pseudo-aléatoires cryptographiquement sécurisés. Un exemple :

$bytes = random_bytes(20);
var_dump(bin2hex($bytes));
Copier après la connexion

Cela produira un résultat tel que :

string(40) "5fe69c95ed70a9869d9f9af7d8400a6673bb9ce9"
Copier après la connexion

PHP 5 (obsolète)

Pour PHP 5, c'est Il est recommandé d'utiliser à la place openssl_random_pseudo_bytes(), qui génère des jetons cryptographiquement sécurisés. Une solution simple :

bin2hex(openssl_random_pseudo_bytes($bytes))
Copier après la connexion

Approche plus sécurisée

Pour améliorer la sécurité, la fonction suivante peut générer une chaîne alphanumérique aléatoire et unique dans une plage de longueur spécifiée :

function getToken($length)
{
    $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    $max = strlen($codeAlphabet); // edited

    for ($i=0; $i < $length; $i++) {
        $token .= $codeAlphabet[crypto_rand_secure(0, $max-1)];
    }

    return $token;
}
Copier après la connexion

Cette approche intègre crypto_rand_secure($min, $max) en remplacement de rand() ou mt_rand(), en utilisant openssl_random_pseudo_bytes pour garantir le caractère aléatoire.

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal