gobyexample-sha1-hashes

2018-11-07  本文已影响0人  bocsoft

来源: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

上一篇下一篇

猜你喜欢

热点阅读