Génération d'entiers aléatoires sécurisés avec le package "crypto/rand"
Pour générer en toute sécurité un entier aléatoire compris entre 0 et 27 à l'aide du package "crypto/rand" /rand", vous pouvez utiliser la fonction suivante :
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
Cette fonction renvoie un pointeur vers un big.Int qui représente l'entier généré aléatoirement, et elle prend un io.Reader (dans ce cas, rand .Reader) et un big.Int qui spécifie la valeur maximale.
Voici comment utiliser cette fonction pour générer un entier aléatoire entre 0 et 27 :
package main import ( "fmt" "crypto/rand" "math/big" ) func main() { nBig, err := rand.Int(rand.Reader, big.NewInt(27)) if err != nil { panic(err) } n := nBig.Int64() fmt.Printf("Here is a random int in [0,27): %d\n", n) }
Vous ne le faites pas recevez directement un entier go car le package "crypto/rand" utilise un type big.Int pour représenter des entiers de précision arbitraire, ce qui est plus flexible pour divers scénarios.
Pour générer des jetons sécurisés, vous pouvez utiliser un similaire approche en générant un tableau aléatoire d'octets et en le codant à l'aide d'un schéma de codage approprié (tel que Base64 ou Base32) pour traduire les octets en une chaîne de jetons.
Par exemple, l'extrait de code que vous avez fourni (getToken) montre comment générer un jeton sécurisé en utilisant cette approche.
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!