rand

优质
小牛编辑
141浏览
2023-12-01

import "crypto/rand"

rand包实现了用于加解密的更安全的随机数生成器。


  • 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)
  • Examples


  • Read
  • Variables

    var Reader io.Reader

    Reader是一个全局、共享的密码用强随机数生成器。在Unix类型系统中,会从/dev/urandom读取;而Windows中会调用CryptGenRandom API。

    func Int

    func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)

    返回一个在[0, max)区间服从均匀分布的随机值,如果max<=0则会panic。

    func Prime

    func Prime(rand io.Reader, bits int) (p *big.Int, err error)

    返回一个具有指定字位数的数字,该数字具有很高可能性是质数。如果从rand读取时出错,或者bits<2会返回错误。

    func Read

    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