Go sha256使用实例介绍

SHA-256

安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。SHA-1已经不是那边安全了,google和微软都已经弃用这个加密算法。为此,我们使用热门的比特币使用过的算法SHA-256作为实例。其它SHA算法,也可以按照这种模式进行使用。

字符串哈希值

生成一串字符的sha256哈希值,通常的做法 sha256.New(), sha256.Write(bytes),最后 sha256.Sum([]byte{})。代码实例:

package main

import (
    "crypto/sha256"
    "fmt"
)

func main(){
    s := "sha256 芳华"

    h := sha256.New()
    h.Write([]byte(s))
    bs := h.Sum(nil)

    fmt.Printf("origin: %s, sha256 hash: %x\n", s, bs)
}

代码中,h.Write写入需要哈希的内容。h.Sum添加额外的[]byte到当前的哈希中,一般不是经常需要这个操作。

文件哈希值

文件的哈希值需要指定文件路径,获取文件的内容后再进行SHA-256哈希计算。实例代码:

package main

import (
    "crypto/sha256"
    "fmt"
    "os"
    "io"
    "encoding/hex"
)
func hashSHA256File(filePath string) (string, error){
    var hashValue string
    file, err := os.Open(filePath)
    if err != nil {
        return hashValue, err
    }
    defer file.Close()
    hash := sha256.New()
    if _, err := io.Copy(hash, file); err != nil {
        return hashValue,  err
    }
    hashInBytes := hash.Sum(nil)
    hashValue = hex.EncodeToString(hashInBytes)
    return hashValue, nil

}

func main(){
    filePath := "D:/VPN/advancedconf.jpg"
    if hash , err := hashSHA256File(filePath); err != nil {
        fmt.Printf(" %s, sha256 value: %s ", filePath,  hash)
    }else {
        fmt.Printf(" %s, sha256 hash: %s ", filePath,  hash)
    }
}

欢迎加入我的微信公众号

欢迎加入我的微信公众号

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值