sha256生成hash值

一、说在前面

  最近学习区块链,区块的hash值作为一个区块的指纹,那么如何让一个hash值与一个区块的信息唯一对应呢,就用到了sha256算法。

二、sha256

  对于不同的输入,哪怕是有一点点微小的差别,输出结果都会产生较大的差异

  对于相同的输入,会产生相同的输出

  输出结果是一串复杂的定长字符串,例如(b5612d51ede84f87c077a42cd615f423fc780bfe5e001eab4aa754d11fd6547e

三、代码(Go)

 

func main() {
	//fmt.Println("123")

	//模拟区块hash生成
	//var hashdata=strconv.Itoa(1)+strconv.Itoa(2)+strconv.Itoa(3)+time.Now().String()

	//去掉时间戳
	//var hashdata=strconv.Itoa(1)+strconv.Itoa(2)+strconv.Itoa(3)
	//a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

	//添加信息
	//var hashdata=strconv.Itoa(1)+strconv.Itoa(2)+strconv.Itoa(3)+strconv.Quote(("信息"))
	//b5612d51ede84f87c077a42cd615f423fc780bfe5e001eab4aa754d11fd6547e
	//结果相同

	//添加信息+时间戳
	//var TimeStamp=time.Now().String()
	//var hashdata=strconv.Itoa(1)+strconv.Itoa(2)+strconv.Itoa(3)+strconv.Quote(("信息"))+TimeStamp
	//fmt.Println(TimeStamp)
	//2021-02-19 16:50:20.2985161 +0800 CST m=+0.015704901
	//a93379547caae30d781c49ac4441ae5534d37320a0c1f4d99a49f349d54b2e8a

	var TimeStamp="2021-02-19 16:50:20.2985161 +0800 CST m=+0.015704901"
	var hashdata=strconv.Itoa(1)+strconv.Itoa(2)+strconv.Itoa(3)+strconv.Quote(("信息"))+TimeStamp
	//a93379547caae30d781c49ac4441ae5534d37320a0c1f4d99a49f349d54b2e8a
	//nice哦!  相同

	//哈希算法
	var sha =sha256.New()
	sha.Write([]byte(hashdata))
	hashed:=sha.Sum(nil)
	//将字节转为字符串
	fmt.Println(hex.EncodeToString(hashed))

}

 

  

 

posted @ 2021-02-19 16:59  酸奶面包  阅读(347)  评论(0编辑  收藏  举报