Spaces:
Configuration error
Configuration error
| package utils | |
| import ( | |
| "crypto/rand" | |
| "fmt" | |
| "math/big" | |
| ) | |
| // GenerateToken menghasilkan Token 6 digit yang aman secara kriptografi. | |
| func GenerateToken() (int64, error) { | |
| // Menentukan batas bawah Token, yaitu 100000 (6 digit terkecil) | |
| const minToken = 100000 | |
| // Menentukan jumlah kemungkinan angka 6 digit, yaitu dari 100000 sampai 999999, | |
| // sehingga totalnya 900000 kombinasi | |
| const maxRange = 900000 | |
| // Mengonversi nilai maxRange ke tipe *big.Int untuk digunakan pada fungsi rand.Int | |
| rangeLimit := big.NewInt(int64(maxRange)) | |
| // Menghasilkan angka acak secara aman dalam rentang [0, 899999] | |
| n, err := rand.Int(rand.Reader, rangeLimit) | |
| if err != nil { | |
| // Jika gagal menghasilkan angka acak, kembalikan error | |
| return 0, fmt.Errorf("gagal menghasilkan Token: %w", err) | |
| } | |
| // Menambahkan minToken agar angka berada di rentang [100000, 999999] | |
| tokenValue := minToken + n.Int64() | |
| // Memformat hasil sebagai string 6 digit, menambahkan nol di depan jika perlu | |
| return tokenValue, nil | |
| } | |