Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menjana Integer Rawak Selamat dan Token Menggunakan 'crypto/rand'?
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) }
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] }
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!