昨天使用 Go 完成了一个小小的爬虫和展示的 web 项目,抓取了5000首古诗文,并能够呈现在自己的网站上。为了避免古诗文的重复,我将古诗文内容进行了 md5 哈希,并作为唯一索引。Go 语言中的哈希并不像 PHP 中那样简单,但是经过实践,也能够快速的理解并使用 Go 语言中的哈希算法。
Golang的加密库都放在crypto目录下,其中MD5库在crypto/md5包中,该包主要提供了New、Write和Sum方法。
type digest struct {
s [4]uint32
x [chunk]byte
nx int
len uint64
}
因此,加密流程如下所示:
c2 := md5.New()
c2.Write([]byte(`hello world`))
c2.Sum([]byte(nil)))
其实有一种更简便的方法,在 md5.go 中,提供了一个 Sum 函数 直接串行了上述方法,因此,上述代码可合并为:
md5.Sum([]byte(`hello world`))
上述程序的放回结果为128bit (也就是32位)的16进制数组,如果需要将其转化为 string 类型,需要使用hex.EncodeToString 函数,并需要将数组转化为 slice, 例如:
c1 := md5.Sum([]byte(`hello world`))
fmt.Println(hex.EncodeToString(c1[:]))
//返回“5eb63bbbe01eeed093cb22bb8f5acdc3”
sha256 方法和 md5 方法的使用方法完全相同,可尝试使用。
c2 := sha256.Sum256([]byte("hello world"))
fmt.Println(hex.EncodeToString(c2[:]))
暂时没有留言