當前位置: 首頁>>編程語言>>正文


Go語言教程:sha1散列/哈希

返回Go語言教程首頁

概念簡介

SHA1 散列經常用生成二進製文件或者文本塊的短標識。例如,git 版本控製係統大量的使用 SHA1 來標識受版本控製的文件和目錄。這裏是Go語言中如何進行 SHA1 散列計算的例子。

例程代碼


package main

// Go 在多個 `crypto/*` 包中實現了一係列散列函數。
import "crypto/sha1"
import "fmt"

func main() {
    s := "sha1 this string"

    // 產生一個散列值的方式是 `sha1.New()`,`sha1.Write(bytes)`,
    // 然後 `sha1.Sum([]byte{})`。這裏我們從一個新的散列開始。
    h := sha1.New()

    // 寫入要處理的字節。如果是一個字符串,需要使用
    // `[]byte(s)` 來強製轉換成字節數組。
    h.Write([]byte(s))

    // 這個用來得到最終的散列值的字符切片。`Sum` 的參數可以
    // 用來給現有的字符切片追加額外的字節切片:一般不需要。
    bs := h.Sum(nil)

    // SHA1 值經常以 16 進製輸出,例如在 git commit 中。使用
    // `%x` 來將散列結果格式化為 16 進製字符串。
    fmt.Println(s)
    fmt.Printf("%x\n", bs)
}

執行&輸出


# 運行程序計算散列值並以可讀 16 進製格式輸出。
$ go run sha1-hashes.go
sha1 this string
cf23df2207d99a74fbe169e3eba035e633b65d94


# 你可以使用和上麵相似的方式來計算其他形式的散列值。例
# 如,計算 MD5 散列,引入 `crypto/md5` 並使用 `md5.New()`
# 方法。

課程導航

學習上一篇:Go語言教程:URL解析    學習下一篇:Go語言教程:Base64編碼

相關資料

注意,如果你需要密碼學上的安全散列,你需要小心的研究一下
哈希強度

本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/sha1-hashes

Go語言SHA1散列

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4105.html,未經允許,請勿轉載。