многозначный "крипто / ранд" .Int () в однозначном контексте - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь сгенерировать случайное число, используя библиотеку 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
}

Я новичок в этом языке и, следовательно, не могу понять, что нужно делать.

1 Ответ

0 голосов
/ 06 мая 2020

Вы можете сделать что-то подобное (хотя это может быть не лучший подход)

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...