「crypto/rand」による安全なランダム整数の生成
Go では、安全なランダム整数を生成することは、さまざまな暗号化アプリケーションにとって重要なタスクです。 「crypto/rand」パッケージは、これを安全に実現するメカニズムを提供します。
「crypto/rand」パッケージを使用して 0 から 27 までのランダムな整数を生成するには、次の関数を利用できます:
func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)
この関数には 2 つの引数が必要です:
0 から 27 までのランダムな整数を生成するには、次のコードを使用します。
nBig, err := rand.Int(rand.Reader, big.NewInt(27)) if err != nil { panic(err) } n := nBig.Int64()
暗号トークンの生成
安全なトークンを生成するには、「encoding/base32」パッケージを使用してランダムなバイト スライスを生成し、それをBase32エンコーディングを使用した文字列。以下に例を示します。
package main import ( "crypto/rand" "encoding/base32" "fmt" ) func main() { randomBytes := make([]byte, 32) _, err := rand.Read(randomBytes) if err != nil { panic(err) } token := base32.StdEncoding.EncodeToString(randomBytes)[:27] // Adjust length as needed fmt.Println("Here is a random token: ", token) }
このアプローチは、暗号的に安全な乱数ジェネレーターを利用し、base32 エンコードを使用して結果を文字列に変換するため、トークンを生成するのに安全であると考えられており、出力トークンが予測不可能で困難であることが保証されます。
以上がGo で安全なランダム整数とトークンを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。