?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
import "crypto/rand"
概述
索引
示例
rand 包實現(xiàn)了一個密碼安全的偽隨機數(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是一個密碼強大的偽隨機生成器的全球共享實例。
在Linux上,Reader 使用 getrandom(2)(如果可用),否則使用 /dev/urandom。在OpenBSD 上,Reader使用 getentropy(2)。在其他類 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) 中返回一個統(tǒng)一的隨機值。如果 max <= 0,它會發(fā)生混亂。
func Prime(rand io.Reader, bits int) (p *big.Int, err error)
Prime 返回給定大小的數(shù)字p,使得 p 以高概率為素數(shù)。Prime 會返回由 rand.Read 返回的任何錯誤或位 <2 的錯誤。
func Read(b []byte) (n int, err error)
Read 是一個使用 io.ReadFull 調用 Reader.Read 的輔助函數(shù)。返回時,n == len(b) 當且僅當 err == nil。
本例從 rand.Reader 中讀取10個密碼安全的偽隨機數(shù),并將它們寫入字節(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)在應該包含隨機字節(jié)而不是僅包含零。 fmt.Println(bytes.Equal(b, make([]byte, c)))}