前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go by Example 中文版: SHA1 哈希

Go by Example 中文版: SHA1 哈希

作者头像
ccf19881030
发布2020-09-24 11:09:36
6720
发布2020-09-24 11:09:36
举报

Go by Example 中文版:SHA1 哈希

SHA1 散列(hash)经常用于生成二进制文件或者文本块的短标识。 例如,git 版本控制系统 大量的使用了 SHA1 来标识受版本控制的文件和目录。 这是 Go 中如何进行 SHA1 散列计算的例子。

package main

// Go by Example 中文版: SHA1 哈希
// https://gobyexample-cn.github.io/sha1-hashes

//SHA1 散列(hash) 经常用于生成二进制文件或者文本块的短标识。
//例如,git 版本控制系统 大量的使用了 SHA1 来标识受版本控制的文件和目录。
//这是 Go 中如何进行 SHA1 散列计算的例子。

// Go在多个crypto/*包中实现了一系列散列函数
import (
	"crypto/sha1"
	"fmt"
)

func main() {
	s := "sha1 this string"

	// 产生一个散列值的方式是 sha1.New()
	// sha1.Wrtie(bytes),然后 sha1.Sum([]bytes{})。这里我们从一个新的散列开始。
	h := sha1.New()

	// 写入要处理的字节。如果是一个字符串,需要使用[]byte(s)将其强制转换成字节数组。
	h.Write([]byte(s))

	// Sum得到最终的散列值的字符切片。Sum接收一个参数,可以用来给现有的字符切片追加额外的字符切片:
	// 但是一般都不需要这样做。
	bs := h.Sum(nil)

	// SHA1值经常以16进制输出,例如在 git commit中。我们这里也使用%x来将散列结果格式化为16进制字符串。
	fmt.Println(s)
	fmt.Printf("%x\n", bs)
}

运行程序计算散列值,并以可读的 16 进制格式输出。

$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94

你可以使用和上面相似的方式来计算其他形式的散列值。 例如,计算 MD5 散列,引入 crypto/md5 并使用 md5.New() 方法。

注意,如果你需要密码学上的安全散列,你需要仔细的研究一下 加密散列函数

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go by Example 中文版:SHA1 哈希
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档