Heim > Artikel > Backend-Entwicklung > Wie generiert man sichere Zufallszahlen mit dem Paket „crypto/rand“?
Generieren sicherer zufälliger Ganzzahlen mit dem Paket „crypto/rand“
Um sicher eine zufällige Ganzzahl zwischen 0 und 27 mit dem Paket „crypto /rand“ können Sie die folgende Funktion verwenden:
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
Diese Funktion gibt einen Zeiger auf ein big.Int zurück, das die zufällig generierte Ganzzahl darstellt, und benötigt einen io.Reader (in diesem Fall rand). .Reader) und ein big.Int, das den Maximalwert angibt.
So können Sie diese Funktion verwenden, um eine zufällige Ganzzahl zwischen 0 und 27 zu generieren:
package main import ( "fmt" "crypto/rand" "math/big" ) func main() { nBig, err := rand.Int(rand.Reader, big.NewInt(27)) if err != nil { panic(err) } n := nBig.Int64() fmt.Printf("Here is a random int in [0,27): %d\n", n) }
Das ist nicht der Fall Erhalten Sie direkt eine Go-Ganzzahl, da das Paket „crypto/rand“ einen big.Int-Typ verwendet, um Ganzzahlen mit beliebiger Genauigkeit darzustellen, was für verschiedene Szenarien flexibler ist.
Zum Generieren sicherer Token können Sie einen ähnlichen verwenden Ansatz, indem ein zufälliges Array von Bytes generiert und mit einem geeigneten Codierungsschema (z. B. Base64 oder Base32) codiert wird, um die Bytes in eine Zeichenfolge von Token zu übersetzen.
Der von Ihnen bereitgestellte Codeausschnitt (getToken) zeigt beispielsweise, wie Sie mit diesem Ansatz ein sicheres Token generieren.
Das obige ist der detaillierte Inhalt vonWie generiert man sichere Zufallszahlen mit dem Paket „crypto/rand“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!