zoukankan      html  css  js  c++  java
  • 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))
    
    }
    

      

  • 相关阅读:
    为博客园选择一个小巧霸气的语法高亮插件
    再议 js 数字格式之正则表达式
    [扯蛋] 项目说
    浅谈 js 语句块与标签
    Yii 自定义模型路径
    js小记 function 的 length 属性
    js拾遗:appendChild 添加移动节点
    浅谈 IE下innerHTML导致的问题
    浅谈 js 数字格式类型
    [hihoCoder] 第四十九周: 欧拉路·一
  • 原文地址:https://www.cnblogs.com/suanai/p/14416972.html
Copyright © 2011-2022 走看看