「crypto/rand.Int」を使用したランダム整数生成
「crypto/rand」パッケージ内には、安全なランダムを生成する必要があります。整数。 0 ~ 27 の範囲でこれを実現する方法の例を以下に示します。
package main import ( "crypto/rand" "fmt" "math/big" ) func main() { nBig, err := rand.Int(rand.Reader, big.NewInt(27)) if err != nil { panic(err) } n := nBig.Int64() fmt.Printf("Random int in [0,27): %d\n", n) }
この関数は、「math/big」ライブラリの「rand.Reader」と「big.Int」型を利用します。 int の範囲を超える暗号化ランダム性を実現します。
セキュア トークン生成
ただし、安全なトークンを生成するコンテキストでは、代替のより適切なアプローチが推奨されます。
package main import ( "crypto/rand" "encoding/base32" "fmt" ) func main() { token := getToken(10) fmt.Printf("Secure token: %s\n", token) } func getToken(length int) string { randomBytes := make([]byte, 32) _, err := rand.Read(randomBytes) if err != nil { panic(err) } return base32.StdEncoding.EncodeToString(randomBytes)[:length] }
このシナリオでは、ランダムなバイトが生成され、次を使用してエンコードされます。 「base32」を使用してトークンを作成します。このアプローチは、安全なトークンの生成には十分であると考えられます。
以上が「crypto/rand」を使用して安全なランダム整数とトークンを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。