crypto/sha256 的使用

想要把一个字符串经过 SHA256 哈希后,

package main
 
import (
    "crypto/sha256"
    "fmt"
)
 
func main() {
    h := sha256.New()
    h.Write([]byte("hello world\n"))
    fmt.Printf("%x", h.Sum(nil))  // 这句话是什么意思?

}

请问下,

  1. h.Sum(nil) 这句话是什么意思?
  2. 最后得到的哈希值是一串数字吗,这里用 []unit8 数组表示吗?
阅读 2.7k
1 个回答

Q: h.Sum(nil) 这句话是什么意思?
A: 就是计算哈希值的意思,括号中间的参数一般都传 nil 不用管它。

Q: 最后得到的哈希值是一串数字吗,这里用 []unit8 数组表示吗?
A: SHA-256 是一种哈希算法,返回的结果是 256 位,也就是 32 个字节(1个字节=8个二进制位)。所以 h.Sum(nil) 最终返回的是一个长度位 32 的 []byte 。
但是为了看起来方便,通常会使用 HEX 编码(16 进制的编码方式,所以又称为 Base16)将这个 32 的 []byte 转成一个 64 位长度的字符串,使用 0-9 和 a-e 这 16 个字符。
%x 就用于将一个 []byte 转成 base 16 编码的字符串。

%x base 16, lower-case, two characters per byte

更多编码和哈希相关的问题可以参考我的Blog: https://xxgblog.com/2021/11/3...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题