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  }