首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

crypto/rand

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

示例

Read

文件包

变量

Reader是一个密码强大的伪随机生成器的全球共享实例。

在Linux上,Reader 使用 getrandom(2)(如果可用),否则使用 /dev/urandom。在OpenBSD 上,Reader使用 getentropy(2)。在其他类 Unix 系统上,Reader 从 /dev/urandom 读取。在 Windows 系统上,Reader 使用 CryptGenRandom API。

代码语言:javascript
复制
var Reader io.Reader
代码语言:javascript
复制
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)

Int在[0, max) 中返回一个统一的随机值。如果 max <= 0,它会发生混乱。

代码语言:javascript
复制
func Prime(rand io.Reader, bits int) (p *big.Int, err error)

Prime 返回给定大小的数字p,使得 p 以高概率为素数。Prime 会返回由 rand.Read 返回的任何错误或位 <2 的错误。

代码语言:javascript
复制
func Read(b []byte) (n int, err error)

Read 是一个使用 io.ReadFull 调用 Reader.Read 的辅助函数。返回时,n == len(b) 当且仅当 err == nil。

示例

本例从 rand.Reader 中读取10个密码安全的伪随机数,并将它们写入字节片。

代码语言:txt
复制
package main

import (
	"bytes"
	"crypto/rand"
	"fmt"
)

func main() {
	c := 10
	b := make([]byte, c)
	_, err := rand.Read(b)
	if err != nil {
		fmt.Println("error:", err)
		return
	}
	// 切片现在应该包含随机字节而不是仅包含零。
	fmt.Println(bytes.Equal(b, make([]byte, c)))

}

扫码关注腾讯云开发者

领取腾讯云代金券