Maison > développement back-end > Golang > Comment générer des entiers et des jetons aléatoires sécurisés à l'aide de « crypto/rand » ?

Comment générer des entiers et des jetons aléatoires sécurisés à l'aide de « crypto/rand » ?

DDD
Libérer: 2024-11-23 09:09:17
original
989 Les gens l'ont consulté

How to Generate Secure Random Integers and Tokens Using

Génération aléatoire d'int à l'aide de "crypto/rand.Int"

Dans le package "crypto/rand" réside la nécessité de générer des informations aléatoires sécurisées entiers. Un exemple de la façon d'y parvenir entre 0 et 27 est ci-dessous :

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)
}
Copier après la connexion

Cette fonction utilise le type "rand.Reader" et "big.Int" de la bibliothèque "math/big". pour obtenir un caractère aléatoire cryptographique au-delà de la plage int.

Génération de jetons sécurisés

Cependant, dans Dans le contexte de la génération de jetons sécurisés, une approche alternative et plus appropriée est recommandée :

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]
}
Copier après la connexion

Dans ce scénario, des octets aléatoires sont générés, puis encodés en "base32" pour créer un jeton. Cette approche est jugée suffisante pour une génération sécurisée de jetons.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal