Heim > Artikel > Backend-Entwicklung > Wie generiert man sichere zufällige Ganzzahlen und Token mit „crypto/rand'?
Zufällige Int-Generierung mit „crypto/rand.Int“
Im Paket „crypto/rand“ liegt die Notwendigkeit, sichere Zufallsgeneratoren zu generieren ganze Zahlen. Ein Beispiel, wie dies im Bereich von 0 bis 27 erreicht werden kann, finden Sie unten:
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) }
Diese Funktion nutzt den Typ „rand.Reader“ und den Typ „big.Int“ aus der Bibliothek „math/big“. um kryptografische Zufälligkeit über den int-Bereich hinaus zu erreichen.
Sichere Token-Generierung
Allerdings in der Im Zusammenhang mit der Generierung sicherer Token wird ein alternativer und geeigneterer Ansatz empfohlen:
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] }
In diesem Szenario werden zufällige Bytes generiert und dann mit „base32“ codiert, um ein Token zu erstellen. Dieser Ansatz wird für die sichere Token-Generierung als ausreichend erachtet.
Das obige ist der detaillierte Inhalt vonWie generiert man sichere zufällige Ganzzahlen und Token mit „crypto/rand'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!