使用“crypto/rand”包生成安全随机整数
使用“crypto/rand”包安全地生成 0 到 27 之间的随机整数/rand”包中,您可以使用以下函数:
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
此函数返回一个指向代表随机生成的整数的 big.Int 的指针,并且它需要一个 io.Reader (在本例中为 rand .Reader) 和一个指定最大值的 big.Int。
以下是如何使用此函数生成 0 到 27 之间的随机整数:
package main import ( "fmt" "crypto/rand" "math/big" ) func main() { nBig, err := rand.Int(rand.Reader, big.NewInt(27)) if err != nil { panic(err) } n := nBig.Int64() fmt.Printf("Here is a random int in [0,27): %d\n", n) }
您不直接接收一个go整数,因为“crypto/rand”包使用big.Int类型来表示任意精度的整数,这对于各种场景来说更加灵活。
为了生成安全令牌,您可以使用类似的方法是生成随机字节数组并使用合适的编码方案(例如 Base64 或 Base32)对其进行编码,以将字节转换为令牌字符串。
例如,您提供的代码片段 (getToken) 演示了如何使用此方法生成安全令牌。
以上是如何使用'crypto/rand”包生成安全随机整数?的详细内容。更多信息请关注PHP中文网其他相关文章!