40 lines
833 B
Go
40 lines
833 B
Go
package shell
|
|
|
|
import (
|
|
"crypto/md5"
|
|
"encoding/hex"
|
|
"io"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func hash_file_md5(filePath string) (string, error) {
|
|
var returnMD5String string
|
|
file, err := os.Open(filePath)
|
|
if err != nil {
|
|
return returnMD5String, err
|
|
}
|
|
defer file.Close()
|
|
hash := md5.New()
|
|
if _, err := io.Copy(hash, file); err != nil {
|
|
return returnMD5String, err
|
|
}
|
|
hashInBytes := hash.Sum(nil)[:16]
|
|
returnMD5String = hex.EncodeToString(hashInBytes)
|
|
return returnMD5String, nil
|
|
|
|
}
|
|
|
|
// hash thyself: hash_file_md5(os.Args[0])
|
|
func Md5sum(filename string) string {
|
|
filename = Path(filename)
|
|
log.Println("shell.Md5sum() START filename =", filename)
|
|
hash, err := hash_file_md5(filename)
|
|
if err == nil {
|
|
log.Println("shell.Md5sum() hash =", hash)
|
|
return hash
|
|
}
|
|
log.Println("shell.Md5sum() failed err =", err.Error())
|
|
return ""
|
|
}
|