多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# package rand `import "crypto/rand"` rand包实现了用于加解密的更安全的随机数生成器。 ## Index * [Variables](#pkg-variables) * [func Int(rand io.Reader, max \*big.Int) (n \*big.Int, err error)](#Int) * [func Prime(rand io.Reader, bits int) (p \*big.Int, err error)](#Prime) * [func Read(b []byte) (n int, err error)](#Read) ### Examples * [Read](#example-Read) ## Variables ``` var Reader io.Reader ``` Reader是一个全局、共享的密码用强随机数生成器。在Unix类型系统中,会从/dev/urandom读取;而Windows中会调用CryptGenRandom API。 ## func [Int](https://github.com/golang/go/blob/master/src/crypto/rand/util.go#L106 "View Source") ``` func Int(rand io.Reader, max *big.Int) (n *big.Int, err error) ``` 返回一个在[0, max)区间服从均匀分布的随机值,如果max<=0则会panic。 ## func [Prime](https://github.com/golang/go/blob/master/src/crypto/rand/util.go#L31 "View Source") ``` func Prime(rand io.Reader, bits int) (p *big.Int, err error) ``` 返回一个具有指定字位数的数字,该数字具有很高可能性是质数。如果从rand读取时出错,或者bits<2会返回错误。 ## func [Read](https://github.com/golang/go/blob/master/src/crypto/rand/rand.go#L19 "View Source") ``` func Read(b []byte) (n int, err error) ``` 本函数是一个使用io.ReadFull调用Reader.Read的辅助性函数。当且仅当err == nil时,返回值n == len(b)。 Example ``` c := 10 b := make([]byte, c) _, err := rand.Read(b) if err != nil { fmt.Println("error:", err) return } // The slice should now contain random bytes instead of only zeroes. fmt.Println(bytes.Equal(b, make([]byte, c))) ``` Output: ``` false ```