package main import ( "bytes" "crypto/sha256" "encoding/hex" "fmt" "runtime" "sync" "os" ) var ( chars = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890") tail = []byte("SUex0zeSOI7DilNj") result, _ = hex.DecodeString("b5bbdab6b117ece3e45ca60ecf2c666e7a5ee1bcbb9596c1e06c7e7995c1ee8d") wg sync.WaitGroup ) func sha(s []byte) { for _, ch1 := range s { for _, ch2 := range chars { for _, ch3 := range chars { for _, ch4 := range chars { head := []byte{ch1, ch2, ch3, ch4} h := sha256.New() h.Write(head) h.Write(tail) if bytes.Equal(h.Sum(nil), result) { fmt.Println(string(head)) } } } } } wg.Done() } func main() { args := os.Args tail = []byte(args[1]) result, _ = hex.DecodeString(args[2]) // fmt.Println(string(tail)) // fmt.Println(string(result)) threads := runtime.NumCPU() // 获取cpu逻辑核心数(包括超线程) snum := len(chars) / threads sthreads := threads*(1+snum) - len(chars) wg.Add(threads) for i := 0; i < threads; i++ { if i < sthreads { go sha(chars[snum*i : snum*(i+1)]) } else { base := snum * sthreads go sha(chars[base+(snum+1)*(i-sthreads) : base+(snum+1)*(i-sthreads+1)]) } } wg.Wait() }