28

Fedora をダウンロードするときに、ここからチェックサムを確認できるように、sha256 ファイルのチェックサムを計算する Windows 用のユーティリティが必要です: https://fedoraproject.org/static/checksums/Fedora-18-i386-CHECKSUM

http://support.microsoft.com/kb/889768の Microsoft ユーティリティは、md5 と sha1 のみを実行します。

暗号化されていない接続を介して、または信頼できないソースから署名されていないコードをダウンロードして検証する意味がないため、署名されておらず、https または知らないソースから入手できない他のダウンロード可能なツールを使用したくありません。それを信頼する別のコードの署名。

幸いなことに、Google はすべてのダウンロードに https を使用する可能性を提供しているので、Go over secure connection をダウンロードしてそこから開始できます。

これは、小さなファイルに対してこれを行う単純なコードですが、ストリーミングではないため、大きなファイルにはあま​​り適していません。

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)))
}

ストリームを使用して、任意のファイル サイズで動作するようにする方法。

4

3 に答える 3

30

SHA256 ハッシャーはio.Writerインターフェイスを実装するため、1 つのオプションは、関数を使用して適切なブロックio.Copy()からデータをコピーすることです。io.Readerこのようなことをする必要があります:

f, err := os.Open(os.Args[1])
if err != nil {
    log.Fatal(err)
}
defer f.Close()
if _, err := io.Copy(hasher, f); err != nil {
    log.Fatal(err)
}
于 2013-04-09T03:20:19.203 に答える