来源:https://github.com/xg-wang/gobyexample/tree/master/examples
//[_ SHA1 散列_]经常用于生成二进制文件或者文本块的短标识。例如,[git 版本控制系统]
//大量的使用SHA1来标识受版本控制的文件或目录。这里是GO中如何进行SHA1散列计算的例子
package main
//Go 在多个`crypto/*`包中实现了一系列散列函数
import (
"crypto/sha1"
"fmt"
)
func main() {
s := "sha1 this string"
//产生一个散列值的方式是`sha1.New()`,`sha1.Write(bytes)`,然后`sha1.Sum([]byte{})`
h := sha1.New()
//写入要处理的字节,如果是一个字符串,需要使用`[]byte(s)`来强制转换成字节数组
h.Write([]byte(s))
//这个用来得到最终的散列值的字符切片。`Sum`的参数可以用来给现有的字符切片追加
//额外的字节切片:一般不需要
bs := h.Sum(nil)
//SHA1 值经常以16进制输出,例如在 git commit 中。使用`%x`来将散列结果格式为16进制字符串
fmt.Println(s)
fmt.Printf("%x\n", bs)
//可以使用和上面相似的方式来计算其他形式的散列值.例如,计算MD5散列,引入`crypto/md5`并使用`md5.New()`方法
}
输出结果:
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94
网友评论