?
This document uses PHP Chinese website manual Release
import "crypto/rand"
概述
索引
示例
rand 包實(shí)現(xiàn)了一個(gè)密碼安全的偽隨機(jī)數(shù)生成器。
Variables
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
func Prime(rand io.Reader, bits int) (p *big.Int, err error)
func Read(b []byte) (n int, err error)
Read
eagain.go rand.go rand_linux.go rand_unix.go util.go
Reader是一個(gè)密碼強(qiáng)大的偽隨機(jī)生成器的全球共享實(shí)例。
在Linux上,Reader 使用 getrandom(2)(如果可用),否則使用 /dev/urandom。在OpenBSD 上,Reader使用 getentropy(2)。在其他類(lèi) Unix 系統(tǒng)上,Reader 從 /dev/urandom 讀取。在 Windows 系統(tǒng)上,Reader 使用 CryptGenRandom API。
var Reader io.Reader
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
Int在[0, max) 中返回一個(gè)統(tǒng)一的隨機(jī)值。如果 max <= 0,它會(huì)發(fā)生混亂。
func Prime(rand io.Reader, bits int) (p *big.Int, err error)
Prime 返回給定大小的數(shù)字p,使得 p 以高概率為素?cái)?shù)。Prime 會(huì)返回由 rand.Read 返回的任何錯(cuò)誤或位 <2 的錯(cuò)誤。
func Read(b []byte) (n int, err error)
Read 是一個(gè)使用 io.ReadFull 調(diào)用 Reader.Read 的輔助函數(shù)。返回時(shí),n == len(b) 當(dāng)且僅當(dāng) err == nil。
本例從 rand.Reader 中讀取10個(gè)密碼安全的偽隨機(jī)數(shù),并將它們寫(xiě)入字節(jié)片。
package mainimport ("bytes""crypto/rand""fmt")func main() { c := 10 b := make([]byte, c) _, err := rand.Read(b)if err != nil { fmt.Println("error:", err)return}// 切片現(xiàn)在應(yīng)該包含隨機(jī)字節(jié)而不是僅包含零。 fmt.Println(bytes.Equal(b, make([]byte, c)))}