Apps Artificial Intelligence CSS DevOps Go JavaScript Laravel Linux MongoDB MySQL PHP Python Rust Vue

Menghasilkan String Acak di Go

1 min read .
Menghasilkan String Acak di Go

Menghasilkan string acak sering dibutuhkan di aplikasi Go: bikin token, kata sandi, ID unik, atau nama file sementara. Go punya beberapa cara untuk melakukannya—mulai dari yang sederhana dengan math/rand, sampai yang aman secara kriptografis dengan crypto/rand. Ada juga opsi pakai UUID untuk kebutuhan identifikasi standar.

1. math/rand: String Pseudo-Acak

Cocok buat kebutuhan non-kripto, misalnya bikin nama file random atau ID sementara.

package main

import (
	"fmt"
	"math/rand"
	"time"
)

const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

func GenerateRandomString(length int) string {
	rand.Seed(time.Now().UnixNano())
	result := make([]byte, length)
	for i := range result {
		result[i] = letters[rand.Intn(len(letters))]
	}
	return string(result)
}

func main() {
	fmt.Println("Random String:", GenerateRandomString(10))
}

⚠️ Jangan dipakai untuk token atau password, karena hasilnya bisa ditebak.

2. crypto/rand: String Aman

Kalau butuh string yang benar-benar acak dan tidak bisa diprediksi (misalnya password, token API, session key), gunakan crypto/rand.

package main

import (
	"crypto/rand"
	"fmt"
)

const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

func GenerateSecureRandomString(length int) (string, error) {
	result := make([]byte, length)
	_, err := rand.Read(result)
	if err != nil {
		return "", err
	}
	for i := range result {
		result[i] = letters[int(result[i])%len(letters)]
	}
	return string(result), nil
}

func main() {
	str, _ := GenerateSecureRandomString(10)
	fmt.Println("Secure Random String:", str)
}

Hasilnya aman secara kriptografis, cocok untuk sistem sensitif.

3. UUID dengan github.com/google/uuid

Kalau butuh ID unik standar, tinggal pakai UUID.

package main

import (
	"fmt"
	"github.com/google/uuid"
)

func main() {
	id := uuid.New()
	fmt.Println("UUID:", id.String())
}

UUID biasanya dipakai di database, sistem terdistribusi, atau identifikasi objek lintas sistem.

Kapan Pakai yang Mana?

Metode Pakai Kalau… Jangan Pakai Kalau…
math/rand Butuh cepat, non-kripto, contoh: nama file random Token, password, atau sistem sensitif
crypto/rand Token, password, session key—harus aman Butuh cepat/efisien tanpa keamanan ekstra
UUID Perlu ID unik lintas sistem, standar industri Butuh string acak bebas (bukan format UUID)

Kesimpulan

  • math/rand → cukup untuk kebutuhan ringan, non-sensitif.
  • crypto/rand → pilihan wajib untuk keamanan.
  • uuid → praktis untuk ID unik standar.

Dengan milih metode sesuai konteks, string acak di Go bisa jadi cepat dan aman.

Lihat Juga

chevron-up