security fix: Use of insufficient randomness as the key of a cryptographic algorithm

This commit is contained in:
mhsanaei 2025-09-21 17:59:17 +02:00
parent e64e6327ef
commit ae79b43cdb
No known key found for this signature in database
GPG key ID: D875CD086CF668A0

View file

@ -2,7 +2,8 @@
package random
import (
"math/rand"
"crypto/rand"
"math/big"
)
var (
@ -40,12 +41,21 @@ func init() {
func Seq(n int) string {
runes := make([]rune, n)
for i := 0; i < n; i++ {
runes[i] = allSeq[rand.Intn(len(allSeq))]
idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(allSeq))))
if err != nil {
panic("crypto/rand failed: " + err.Error())
}
runes[i] = allSeq[idx.Int64()]
}
return string(runes)
}
// Num generates a random integer between 0 and n-1.
func Num(n int) int {
return rand.Intn(n)
bn := big.NewInt(int64(n))
r, err := rand.Int(rand.Reader, bn)
if err != nil {
panic("crypto/rand failed: " + err.Error())
}
return int(r.Int64())
}