md5file encode

master
sre 4 years ago
parent ab82e41e32
commit 132bb53c43

@ -1,8 +1,12 @@
package crypto
import (
"bufio"
"crypto/md5"
"encoding/hex"
"fmt"
"io"
"os"
"strings"
)
@ -17,3 +21,35 @@ func (c *Crypto) Md5Encode(data string) string {
h.Write([]byte(data))
return hex.EncodeToString(h.Sum(nil))
}
// Md5File return the md5 value of file
func (c *Crypto) Md5EncodeFile(filename string) (string, error) {
if fileInfo, err := os.Stat(filename); err != nil {
return "", err
} else if fileInfo.IsDir() {
return "", nil
}
file, err := os.Open(filename)
if err != nil {
return "", err
}
defer file.Close()
hash := md5.New()
chunkSize := 65536
for buf, reader := make([]byte, chunkSize), bufio.NewReader(file); ; {
n, err := reader.Read(buf)
if err != nil {
if err == io.EOF {
break
}
return "", err
}
hash.Write(buf[:n])
}
checksum := fmt.Sprintf("%x", hash.Sum(nil))
return checksum, nil
}

@ -14,3 +14,9 @@ func TestMd5(tt *testing.T) {
//true
}
func TestCrypto_Md5EncodeFile(t *testing.T) {
filePath := "./md5.go"
fmt.Println(cryptoTool.Md5EncodeFile(filePath))
//fea07bd54d5c1841a682b408fbbb0cf8 <nil>
}

@ -29,3 +29,10 @@ func TestBit62Add(t *testing.T) {
fmt.Println(StrTool.Bit62Add("ly7vp", "1"))
}
func FuzzStr_Bit62Encode(f *testing.F) {
f.Fuzz(func(t *testing.T, a int64) {
fmt.Println(a)
fmt.Println(StrTool.Bit62Encode(a))
})
}

Loading…
Cancel
Save