Heim  >  Artikel  >  Backend-Entwicklung  >  Wie generiert man sichere zufällige Ganzzahlen und Token in Go?

Wie generiert man sichere zufällige Ganzzahlen und Token in Go?

Susan Sarandon
Susan SarandonOriginal
2024-11-12 21:43:02154Durchsuche

How to Generate Secure Random Integers and Tokens in Go?

Sichere zufällige Int-Generierung mit „crypto/rand“

In Go ist die Generierung sicherer zufälliger Ganzzahlen eine wichtige Aufgabe für verschiedene kryptografische Anwendungen. Das Paket „crypto/rand“ bietet einen Mechanismus, um dies sicher zu erreichen.

Um mit dem Paket „crypto/rand“ eine zufällige Ganzzahl zwischen 0 und 27 zu generieren, können Sie die folgende Funktion verwenden:

func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)

Diese Funktion erfordert zwei Argumente:

  • rand: Eine Implementierung von io.Reader, wie crypto/rand.Reader, zum Generieren von Zufallsdaten.
  • max: Ein big.Int, der die Obergrenze für die zufällige Ganzzahl darstellt.

Um eine zufällige Ganzzahl zwischen 0 und 27 zu generieren, verwenden Sie den folgenden Code:

nBig, err := rand.Int(rand.Reader, big.NewInt(27))
if err != nil {
    panic(err)
}
n := nBig.Int64()

Kryptografische Token-Generierung

Um sichere Token zu generieren, besteht ein besserer Ansatz darin, das Paket „encoding/base32“ zu verwenden, um ein zufälliges Byte-Slice zu generieren und in dieses umzuwandeln eine Zeichenfolge mit Base32-Codierung. Hier ist ein Beispiel:

package main

import (
    "crypto/rand"
    "encoding/base32"
    "fmt"
)

func main() {
    randomBytes := make([]byte, 32)
    _, err := rand.Read(randomBytes)
    if err != nil {
        panic(err)
    }
    token := base32.StdEncoding.EncodeToString(randomBytes)[:27] // Adjust length as needed
    fmt.Println("Here is a random token: ", token)
}

Dieser Ansatz gilt als sicher für die Generierung von Token, da er einen kryptografisch sicheren Zufallszahlengenerator verwendet und das Ergebnis mithilfe der Base32-Codierung in eine Zeichenfolge konvertiert, wodurch sichergestellt wird, dass die Ausgabetoken unvorhersehbar und schwierig sind erraten.

Das obige ist der detaillierte Inhalt vonWie generiert man sichere zufällige Ganzzahlen und Token in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn