Go में निश्चित लंबाई की यादृच्छिक स्ट्रिंग कैसे उत्पन्न करें?
सभी को नमस्ते! मैंने अभी Go सीखना शुरू किया है और एक सामान्य कार्य का सामना किया: निश्चित लंबाई की यादृच्छिक स्ट्रिंग उत्पन्न करना, जैसे कि अद्वितीय पहचानकर्ता, टोकन या पासवर्ड बनाने के लिए। मैंने यह कोड लिखा:
```go
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println(RandString(10))
}
func RandString(n int) string {
var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
b := make([]rune, n)
for i := range b {
b[i] = letters[rand.Intn(len(letters))]
}
return string(b)
}
```
कोड काम करता हुआ लगता है, लेकिन मैंने एक अजीब व्यवहार देखा: प्रोग्राम के हर रन पर एक ही स्ट्रिंग उत्पन्न होती है। मैंने गूगल किया और पता चला कि `rand.Seed()` का उपयोग करना चाहिए, लेकिन `rand.Seed(time.Now().UnixNano())` जोड़ने के बाद भी कभी-कभी स्ट्रिंग दोहराई जाती हैं यदि प्रोग्राम बहुत तेजी से कई बार चलाया जाए।
इसके अलावा, मैं सर्वोत्तम प्रथाओं में रुचि रखता हूं: क्रिप्टो-सुरक्षित जनरेशन कैसे करें?