Wie generiert man einen zufälligen String fester Länge in Go?
Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf eine typische Aufgabe gestoßen: Ich muss zufällige Strings einer bestimmten Länge generieren, z.B. für die Erstellung eindeutiger Identifikatoren, Tokens oder Passwörter. Ich habe diesen Code geschrieben:
```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)
}
```
Der Code scheint zu funktionieren, aber ich habe ein seltsames Verhalten bemerkt: Bei jedem Programmstart wird derselbe String generiert. Ich habe gegoogelt und erfahren, dass man `rand.Seed()` verwenden muss, aber selbst nach dem Hinzufügen von `rand.Seed(time.Now().UnixNano())` wiederholen sich die Strings manchmal, wenn das Programm mehrmals hintereinander sehr schnell ausgeführt wird.
Außerdem interessieren mich die Best Practices: Wie macht man die Generierung kryptografisch sicher?