Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menjana Integer Rawak Selamat dan Token Menggunakan 'crypto/rand'?

Bagaimana untuk Menjana Integer Rawak Selamat dan Token Menggunakan 'crypto/rand'?

DDD
Lepaskan: 2024-11-23 09:09:17
asal
980 orang telah melayarinya

How to Generate Secure Random Integers and Tokens Using

Penjanaan Int Rawak menggunakan "crypto/rand.Int"

Dalam pakej "crypto/rand" terdapat keperluan untuk menjana rawak selamat integer. Contoh cara untuk mencapai ini antara julat 0 hingga 27 adalah di bawah:

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)
}
Salin selepas log masuk

Fungsi ini menggunakan "rand.Reader" dan jenis "big.Int" daripada perpustakaan "math/big" untuk mencapai rawak kriptografi melebihi julat int.

Token Selamat Penjanaan

Walau bagaimanapun, dalam konteks penjanaan token selamat, pendekatan alternatif dan lebih sesuai disyorkan:

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]
}
Salin selepas log masuk

Dalam senario ini, bait rawak dijana, kemudian dikodkan menggunakan "base32" untuk mencipta token. Pendekatan ini dianggap mencukupi untuk penjanaan token selamat.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Integer Rawak Selamat dan Token Menggunakan 'crypto/rand'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan