Heim  >  Artikel  >  Backend-Entwicklung  >  Wie generiert man sichere Zufallszahlen mit dem Paket „crypto/rand'?

Wie generiert man sichere Zufallszahlen mit dem Paket „crypto/rand'?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-14 11:44:02494Durchsuche

How to Generate Secure Random Integers with the

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“-Paket 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 a zurück big.Int, das die zufällig generierte Ganzzahl darstellt, und es benötigt einen io.Reader (in diesem Fall rand.Reader) und einen big.Int, der den Maximalwert angibt.

So können Sie diese Funktion verwenden Generieren Sie eine zufällige Ganzzahl zwischen 0 und 27:

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)
}

Sie erhalten nicht 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.

Um sichere Token zu generieren, können Sie einen ähnlichen Ansatz verwenden, indem Sie ein zufälliges Array von Bytes generieren und es mit einem geeigneten Codierungsschema (z. B Base64 oder Base32), 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!

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