登录
首页 >  Golang >  Go问答

单值上下文中的多值“crypto/rand”.Int()

来源:stackoverflow

时间:2024-04-04 16:51:26 428浏览 收藏

哈喽!今天心血来潮给大家带来了《单值上下文中的多值“crypto/rand”.Int()》,想必大家应该对Golang都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习Golang,千万别错过这篇文章~希望能帮助到你!

问题内容

我正在尝试使用库 crypto/rand 生成随机数。该函数的早期实现使用 math/rand,但我需要使用 crypto/rand。这是我的功能如下

func GenerateNum() (num string) {
num = fmt.Sprintf("02:fc:%02x:%02x:%02x:%02x", rand.Int(rand.Reader, big.NewInt(256)),
rand.Int(rand.Reader, big.NewInt(256)), rand.Int(rand.Reader, big.NewInt(256)),
rand.Int(rand.Reader, big.NewInt(256))
)
return
}

我对这种语言相当陌生,因此无法弄清楚应该做什么。


解决方案


您可以这样做(尽管这可能不是最好的方法)

package main

import (
    "crypto/rand"
    "fmt"
    "log"
    "math/big"
)

func cryptoRandSecure() *big.Int {
    nBig, err := rand.Int(rand.Reader, big.NewInt(256))
    if err != nil {
        log.Println(err)
    }
    return nBig
}

func GenerateNum() (num string) {
    n1 := cryptoRandSecure()
    n2 := cryptoRandSecure()
    n3 := cryptoRandSecure()
    n4 := cryptoRandSecure()
    num = fmt.Sprintf("02:fc:%02x:%02x:%02x:%02x", n1, n2, n3, n4)
    return
}

func main() {
    num := GenerateNum()
    fmt.Println(num)
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>