ホームページ >バックエンド開発 >Golang >「crypto/rand」パッケージを使用して安全なランダム整数を生成するにはどうすればよいですか?

「crypto/rand」パッケージを使用して安全なランダム整数を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-14 11:44:02563ブラウズ

How to Generate Secure Random Integers with the

「crypto/rand」パッケージを使用した安全なランダム整数の生成

「crypto/rand」パッケージを使用して 0 から 27 までのランダムな整数を安全に生成するには/rand" パッケージでは、以下を利用できます。 function:

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

この関数は、ランダムに生成された整数を表す big.Int へのポインターを返します。この関数は、io.Reader (この場合は rand.Reader) と、次の値を指定する big.Int を受け取ります。最大値。

この関数を使用して 0 から 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)
}

「crypto/rand」パッケージは任意精度の整数を表すために big.Int 型を使用するため、go 整数を直接受け取ることはできません。これは、さまざまなシナリオに対してより柔軟です。

安全なトークンを生成するには、ランダムなバイト配列を生成し、適切なエンコード スキーム (たとえば、 Base64 または Base32 として)、バイトをトークンの文字列に変換します。

たとえば、指定したコード スニペット (getToken) は、このアプローチを使用して安全なトークンを生成する方法を示しています。

以上が「crypto/rand」パッケージを使用して安全なランダム整数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。