gitee.com/h79/goutils@v1.22.10/common/file/md5.go (about) 1 package file 2 3 import ( 4 "crypto/md5" 5 "fmt" 6 "io" 7 "os" 8 ) 9 10 func MD5(filename string) string { 11 file, err := os.Open(filename) 12 defer file.Close() 13 if err != nil { 14 return "" 15 } 16 return MD5Reader(file) 17 } 18 19 func MD5Byte(src io.Reader) []byte { 20 by, _ := MD5ByteSize(src) 21 return by 22 } 23 24 // MD5ByteSize return md5 bytes and file's size 25 func MD5ByteSize(src io.Reader) ([]byte, int64) { 26 hash := md5.New() 27 ll, err := io.Copy(hash, src) 28 if err != nil { 29 return []byte{}, ll 30 } 31 return hash.Sum(nil), ll 32 } 33 34 func MD5Reader(src io.Reader) string { 35 return fmt.Sprintf("%x", MD5Byte(src)) 36 } 37 38 // MD5Size return md5 hex(32) and file's size 39 func MD5Size(src io.Reader) (string, int64) { 40 has, ll := MD5ByteSize(src) 41 return fmt.Sprintf("%x", has), ll 42 }