git.zd.zone/hrpc/hrpc@v0.0.12/utils/hash/hash.go (about) 1 package hash 2 3 import ( 4 "crypto/md5" 5 "crypto/sha1" 6 "crypto/sha256" 7 "fmt" 8 "io" 9 ) 10 11 func MD5(vs ...interface{}) string { 12 h := md5.New() 13 for _, v := range vs { 14 switch val := v.(type) { 15 case string: 16 io.WriteString(h, val) 17 case []byte: 18 h.Write(val) 19 default: 20 io.WriteString(h, fmt.Sprintf("%v", val)) 21 } 22 } 23 return fmt.Sprintf("%x", h.Sum(nil)) 24 } 25 26 func SHA1(vs ...interface{}) string { 27 h := sha1.New() 28 for _, v := range vs { 29 switch val := v.(type) { 30 case string: 31 io.WriteString(h, val) 32 case []byte: 33 h.Write(val) 34 default: 35 io.WriteString(h, fmt.Sprintf("%v", val)) 36 } 37 } 38 return fmt.Sprintf("%x", h.Sum(nil)) 39 } 40 41 func SHA256(vs ...interface{}) string { 42 h := sha256.New() 43 for _, v := range vs { 44 switch val := v.(type) { 45 case string: 46 io.WriteString(h, val) 47 case []byte: 48 h.Write(val) 49 default: 50 io.WriteString(h, fmt.Sprintf("%v", val)) 51 } 52 } 53 return fmt.Sprintf("%x", h.Sum(nil)) 54 }