我需要计算 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)))
}
如何使它使用流,以便它适用于任何文件大小。