Home  >  Article  >  Backend Development  >  Go language document interpretation: Detailed explanation of crypto/rand.Int function

Go language document interpretation: Detailed explanation of crypto/rand.Int function

WBOY
WBOYOriginal
2023-11-03 08:03:171450browse

Go language document interpretation: Detailed explanation of crypto/rand.Int function

Go language is a modern programming language. Due to its high efficiency and easy-to-learn characteristics, more and more developers are beginning to use this language in projects. In the Go language, the use of random numbers is a very common requirement, and the Int function in crypto/rand, the encrypted random number generator package that comes with the Go language, provides a way to generate random integers.

This article will explain the crypto/rand.Int function in detail and provide specific code examples.

1. crypto/rand.Int function

The crypto/rand.Int function is a random integer generation function provided in the Go language crypto/rand package. This function has two parameters: an input parameter rand, which represents the source of random number generation; an output parameter limbs, which represents the total length of the output random integer.

The function prototype of this function is as follows:

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

Among them, the rand parameter is the source from which random numbers are generated, which can usually be obtained by calling the Reader function in the crypto/rand package. The max parameter represents the total length of the output random integer, and the default value is 1.

The return type of this function is *big.Int, because the big number library Big in the Go language can be used to store integers of any length. If the random number generation fails or an error occurs, the function will return an object of type error.

2. Int function usage examples

Next we provide two specific Int function usage examples so that readers can better understand and use this function.

  1. Example 1: Generate a random integer between 1 and 100

The following is an implementation that uses the crypto/rand.Int function to generate a random integer between 1 and 100. random integer between.

package main

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

func main() {
    max := big.NewInt(100)
    n, err := rand.Int(rand.Reader, max)
    if err != nil {
        fmt.Println("生成随机数失败:", err)
        return
    }
    fmt.Println(n)
}

By calling the Reader function in the crypto/rand package and passing it as a parameter to the rand.Int function, we can generate any integer between 1 and 100. If an error occurs, by outputting the error message, we can correct the code in time.

  1. Example 2: Generate a random string

The following is a more complex example that demonstrates how to use the crypto/rand.Int function to generate a random string of a specified length. string.

package main

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

const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

func main() {
    length := 20
    max := big.NewInt(int64(len(charset)))
    data := make([]byte, length)
    for i := 0; i < length; i++ {
        n, err := rand.Int(rand.Reader, max)
        if err != nil {
            fmt.Println("生成随机数失败:", err)
            return
        }
        index := int(n.Int64())
        data[i] = charset[index]
    }
    fmt.Println(string(data))
}

The above code generates a random string of length 20. The specific steps are:

1. Define a byte array with a length of 20 to store the returned random number.

2. Set the upper limit of generated random numbers to the length of the character set to call the rand.Int function to generate any integer between 0~len(charset)-1.

3. Use the generated random number as the subscript of the character set and store the result in the byte array.

4. Finally, convert the byte array into a string and output it.

3. Summary

Through the introduction of this article, we have learned about the basic use of the crypto/rand.Int function in the Go language, which is very useful for generating random integers and strings.

Also, please note that the random numbers are not completely random, but pseudo-random. Therefore, when using the Int function to generate random numbers, it is important to ensure that a sufficient source of entropy is provided to ensure randomness and security.

The above is the detailed content of Go language document interpretation: Detailed explanation of crypto/rand.Int function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn