• 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))
    
    }
    

      

  • 相关阅读:
    使用XStream解析xml
    分享功能
    上拉加载 下拉刷新
    点击button倒计时
    正则表达式验证手机号码
    第三方登陆
    test
    横向滑动菜单HorizontalScrollView
    slidingmenu侧滑侧单
    2017/4/25 afternoon
  • 原文地址:https://www.cnblogs.com/suanai/p/14416972.html
Copyright © 2020-2023  润新知