Heim  >  Artikel  >  Backend-Entwicklung  >  Wie generiert man sichere zufällige Ganzzahlen und Token mit „crypto/rand'?

Wie generiert man sichere zufällige Ganzzahlen und Token mit „crypto/rand'?

DDD
DDDOriginal
2024-11-23 09:09:17943Durchsuche

How to Generate Secure Random Integers and Tokens Using

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!

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