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 ?