@@ -137,36 +137,36 @@ func MergeInto(dict map[string]interface{}, values ...interface{}) (map[string]i
137137 return dict , nil
138138}
139139
140- // RandomInt returns a random integer between 0 and limit, inclusive
141- func RandomInt (limit int64 ) (int64 , error ) {
140+ // CryptoRandomInt returns a crypto random integer between 0 and limit, inclusive
141+ func CryptoRandomInt (limit int64 ) (int64 , error ) {
142142 rInt , err := rand .Int (rand .Reader , big .NewInt (limit ))
143143 if err != nil {
144144 return 0 , err
145145 }
146146 return rInt .Int64 (), nil
147147}
148148
149- const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
149+ const alphanumericalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
150150
151- // RandomString generates a random alphanumerical string
152- func RandomString (length int64 ) (string , error ) {
153- bytes := make ([]byte , length )
154- limit := int64 (len (letters ))
155- for i := range bytes {
156- num , err := RandomInt (limit )
151+ // CryptoRandomString generates a crypto random alphanumerical string, each byte is generated by [0,61] range
152+ func CryptoRandomString (length int64 ) (string , error ) {
153+ buf := make ([]byte , length )
154+ limit := int64 (len (alphanumericalChars ))
155+ for i := range buf {
156+ num , err := CryptoRandomInt (limit )
157157 if err != nil {
158158 return "" , err
159159 }
160- bytes [i ] = letters [num ]
160+ buf [i ] = alphanumericalChars [num ]
161161 }
162- return string (bytes ), nil
162+ return string (buf ), nil
163163}
164164
165- // RandomBytes generates `length` bytes
166- // This differs from RandomString , as RandomString is limits each byte to have
167- // a maximum value of 63 instead of 255(max byte size)
168- func RandomBytes (length int64 ) ([]byte , error ) {
169- bytes := make ([]byte , length )
170- _ , err := rand .Read (bytes )
171- return bytes , err
165+ // CryptoRandomBytes generates `length` crypto bytes
166+ // This differs from CryptoRandomString , as each byte in CryptoRandomString is generated by [0,61] range
167+ // This function generates totally random bytes, each byte is generated by [0,255] range
168+ func CryptoRandomBytes (length int64 ) ([]byte , error ) {
169+ buf := make ([]byte , length )
170+ _ , err := rand .Read (buf )
171+ return buf , err
172172}
0 commit comments