Avatar ·

Comment générer une chaîne aléatoire de longueur fixe en Go ?

Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré une tâche typique : générer des chaînes aléatoires d'une longueur donnée, par exemple pour créer des identifiants uniques, des tokens ou des mots de passe. J'ai écrit ce code : ```go package main import ( "fmt" "math/rand" ) func main() { fmt.Println(RandString(10)) } func RandString(n int) string { var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") b := make([]rune, n) for i := range b { b[i] = letters[rand.Intn(len(letters))] } return string(b) } ``` Le code semble fonctionner, mais j'ai remarqué un comportement étrange : à chaque exécution du programme, la même chaîne est générée. J'ai cherché sur Google et j'ai appris qu'il faut utiliser `rand.Seed()`, mais même après avoir ajouté `rand.Seed(time.Now().UnixNano())`, les chaînes se répètent parfois si le programme est exécuté plusieurs fois de suite très rapidement. De plus, je m'intéresse aux meilleures pratiques : comment rendre la génération cryptographiquement sécurisée ?