mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
ad8384182c
24 of the 96 nolint directives were dead: they covered findings that no longer exist. A stale suppression is not inert — it silently claims any future finding for that linter in that scope, so a real problem raised there would vanish without anyone noticing. Explanatory prose was kept as ordinary comments. Two directives proved load-bearing under the project gate even though nolintlint reported them unused, and removing them exposed verified contextcheck false positives: App.Run does forward a sigCtx derived from the caller's context to Start, and the migration lock renewal must keep its own deadline because the task context may already be canceled. Both were restored, narrowed to the live linter, and given the reason the originals lacked.
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package pow
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
// fnv1a returns the 32-bit FNV-1a hash of a string
|
|
//
|
|
// FNV-1a 算法位移常量
|
|
func fnv1a(str string) uint32 {
|
|
var hash uint32 = 2166136261
|
|
for i := 0; i < len(str); i++ {
|
|
hash ^= uint32(str[i])
|
|
hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24)
|
|
}
|
|
return hash
|
|
}
|
|
|
|
// fnv1aResume resumes FNV-1a hashing from a given state
|
|
//
|
|
// FNV-1a 算法位移常量
|
|
func fnv1aResume(state uint32, str string) uint32 {
|
|
h := state
|
|
for i := 0; i < len(str); i++ {
|
|
h ^= uint32(str[i])
|
|
h += (hashShift(h))
|
|
}
|
|
return h
|
|
}
|
|
|
|
// hashShift computes FNV-1a mix additions
|
|
func hashShift(h uint32) uint32 {
|
|
return (h << 1) + (h << 4) + (h << 7) + (h << 8) + (h << 24)
|
|
}
|
|
|
|
// prngFromHash generates a hex string of specified length using an initial hash state
|
|
//
|
|
// xorshift 算法位移常量
|
|
func prngFromHash(initialHash uint32, length int) string {
|
|
state := initialHash
|
|
var result strings.Builder
|
|
for result.Len() < length {
|
|
state ^= state << 13
|
|
state ^= state >> 17
|
|
state ^= state << 5
|
|
hexStr := fmt.Sprintf("%08x", state)
|
|
result.WriteString(hexStr)
|
|
}
|
|
return result.String()[:length]
|
|
}
|