【发布时间】:2013-04-08 12:34:20
【问题描述】:
我需要用于计算 sha256 文件校验和的 Windows 实用程序,以便在我下载时 fedora 我可以从这里验证校验和:https://fedoraproject.org/static/checksums/Fedora-18-i386-CHECKSUM
来自http://support.microsoft.com/kb/889768 的 Microsoft 实用程序仅执行 md5 和 sha1。
我不想使用其他未签名且无法从 https 或我不知道的来源获得的可下载工具,因为通过未加密的连接或不受信任的连接下载未签名的代码没有任何意义源来验证另一个代码的签名以信任它。
幸运的是,谷歌提供了使用 https 进行所有下载的可能性,因此我可以通过安全连接下载 Go 并从那里开始。
下面是一个简单的代码,它可以处理小文件,但它不适用于大文件,因为它不是流式传输的。
package main
import (
"io/ioutil"
"crypto/sha256"
"os"
"log"
"encoding/hex"
)
func main() {
hasher := sha256.New()
s, err := ioutil.ReadFile(os.Args[1])
hasher.Write(s)
if err != nil {
log.Fatal(err)
}
os.Stdout.WriteString(hex.EncodeToString(hasher.Sum(nil)))
}
如何让它使用流,以便它适用于任何文件大小。
【问题讨论】:
标签: file io cryptography go sha256