19 lines
449 B
Go
19 lines
449 B
Go
// Package sessionid 提供高熵 session ID 生成器
|
|
package sessionid
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
)
|
|
|
|
// Generate 生成 128-bit 随机 session ID
|
|
// 输出为 base64url (无 padding) 编码,共 22 字符
|
|
// 熵值 2^128 ≈ 3.4e38,暴力枚举不可行
|
|
func Generate() (string, error) {
|
|
b := make([]byte, 16)
|
|
if _, err := rand.Read(b); err != nil {
|
|
return "", err
|
|
}
|
|
return base64.RawURLEncoding.EncodeToString(b), nil
|
|
}
|