Génération aléatoire d'int à l'aide de "crypto/rand.Int"
Dans le package "crypto/rand" réside la nécessité de générer des informations aléatoires sécurisées entiers. Un exemple de la façon d'y parvenir entre 0 et 27 est ci-dessous :
package main import ( "crypto/rand" "fmt" "math/big" ) func main() { nBig, err := rand.Int(rand.Reader, big.NewInt(27)) if err != nil { panic(err) } n := nBig.Int64() fmt.Printf("Random int in [0,27): %d\n", n) }
Cette fonction utilise le type "rand.Reader" et "big.Int" de la bibliothèque "math/big". pour obtenir un caractère aléatoire cryptographique au-delà de la plage int.
Génération de jetons sécurisés
Cependant, dans Dans le contexte de la génération de jetons sécurisés, une approche alternative et plus appropriée est recommandée :
package main import ( "crypto/rand" "encoding/base32" "fmt" ) func main() { token := getToken(10) fmt.Printf("Secure token: %s\n", token) } func getToken(length int) string { randomBytes := make([]byte, 32) _, err := rand.Read(randomBytes) if err != nil { panic(err) } return base32.StdEncoding.EncodeToString(randomBytes)[:length] }
Dans ce scénario, des octets aléatoires sont générés, puis encodés en "base32" pour créer un jeton. Cette approche est jugée suffisante pour une génération sécurisée de jetons.
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!