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
DDDoriginal
2025-01-01 06:15:11756parcourir

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));

Cela produira un résultat tel que :

string(40) "5fe69c95ed70a9869d9f9af7d8400a6673bb9ce9"

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))

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;
}

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!

Déclaration:
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