import "crypto/sha1"
sha1包实现了SHA1哈希算法
Constants
func Sum(data []byte) [Size]byte
func New() hash.Hash
const BlockSize = 64
SHA1的块大小。
const Size = 20
SHA1校验和的字节数。
func New() hash.Hash
返回一个新的使用SHA1校验的hash.Hash接口。
package main
import (
"crypto/sha1"
"fmt"
"io"
)
func main() {
h := sha1.New()
io.WriteString(h, "His money is twice tainted:")
io.WriteString(h, " 'taint yours and 'taint mine.")
fmt.Printf("% x", h.Sum(nil))
}
package main
import (
"crypto/sha1"
"fmt"
"io"
"log"
"os"
)
func main() {
f, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()
h := sha1.New()
if _, err := io.Copy(h, f); err != nil {
log.Fatal(err)
}
fmt.Printf("% x", h.Sum(nil))
}
func Sum(data []byte) [Size]byte
返回数据data的SHA1校验和。
package main
import (
"crypto/sha1"
"fmt"
)
func main() {
data := []byte("This page intentionally left blank.")
fmt.Printf("% x", sha1.Sum(data))
}
package main
import (
"fmt"
"crypto/md5"
"crypto/sha1"
"io"
)
//对字符串进行MD5哈希
func a(data string) string {
t := md5.New();
io.WriteString(t,data);
return fmt.Sprintf("%x",t.Sum(nil));
}
//对字符串进行SHA1哈希
func b(data string) string {
t := sha1.New();
io.WriteString(t,data);
return fmt.Sprintf("%x",t.Sum(nil));
}
func main(){
var data string = "abc";
fmt.Printf("MD5 : %s\n",a(data));
fmt.Printf("SHA1 : %s\n",b(data));
}
输出结果如下:
D:\workspace\golang>GetMd5AndSha1.exe
MD5 : 900150983cd24fb0d6963f7d28e17f72
SHA1 : a9993e364706816aba3e25717850c26c9cd0d89d
参考资料:
Go语言中文文档
http://www.golang.ltd/
Go语言官方文档
https://golang.google.cn/