Spaces:
Configuration error
Configuration error
File size: 1,005 Bytes
48471f7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 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
}
|