| // Copyright 2024 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package rand |
| |
| const base32alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" |
| |
| // Text returns a cryptographically random string using the standard RFC 4648 base32 alphabet |
| // for use when a secret string, token, password, or other text is needed. |
| // The result contains at least 128 bits of randomness, enough to prevent brute force |
| // guessing attacks and to make the likelihood of collisions vanishingly small. |
| // A future version may return longer texts as needed to maintain those properties. |
| func Text() string { |
| // ⌈log₃₂ 2¹²⁸⌉ = 26 chars |
| src := make([]byte, 26) |
| Read(src) |
| for i := range src { |
| src[i] = base32alphabet[src[i]%32] |
| } |
| return string(src) |
| } |