MCPcopy Create free account
hub / github.com/Mister-leo/fssh / generateSingleRecoveryCode

Function generateSingleRecoveryCode

internal/otp/recovery.go:30–50  ·  view source on GitHub ↗

generateSingleRecoveryCode 生成单个恢复码 格式: XXXX-XXXX-XXXX-XXXX(去除易混淆字符)

()

Source from the content-addressed store, hash-verified

28// generateSingleRecoveryCode 生成单个恢复码
29// 格式: XXXX-XXXX-XXXX-XXXX(去除易混淆字符)
30func generateSingleRecoveryCode() (string, error) {
31 // 字符集:大写字母和数字(去除易混淆字符 0/O, 1/I/L)
32 const charset = "ABCDEFGHJKMNPQRSTUVWXYZ23456789"
33
34 bytes := make([]byte, recoveryCodeLength)
35 if _, err := rand.Read(bytes); err != nil {
36 return "", fmt.Errorf("生成随机数失败: %w", err)
37 }
38
39 parts := make([]string, 4)
40 for i := 0; i < 4; i++ {
41 part := ""
42 for j := 0; j < 4; j++ {
43 idx := int(bytes[i*4+j]) % len(charset)
44 part += string(charset[idx])
45 }
46 parts[i] = part
47 }
48
49 return strings.Join(parts, "-"), nil
50}
51
52// HashRecoveryCodes 计算恢复码的哈希
53// 存储哈希而非明文,提高安全性

Callers 1

GenerateRecoveryCodesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected