Golang文件校驗器

  • 代碼:

    package main
    
    import "io"
    import "os"
    import "fmt"
    import "crypto/md5"
    import "crypto/sha1"
    
    func main() {
        if (len(os.Args) < 3) {
            fmt.Printf("usage: check [md5|sha1] file\n\n")
            fmt.Printf("  %4s: %s\n", "md5", "計算文件md5值")
            fmt.Printf("  %4s: %s\n", "sha1", "計算文件sha1值")
            return
        }
        f, err := os.Open(os.Args[2])
        if err != nil {
            fmt.Printf("Sorry, file open failed\n")
            return
        }
        buf := make([]byte, 1024 * 1024 * 16 * 16)
        switch os.Args[1] {
            case "md5":
                h := md5.New()
                for {
                    n, err := f.Read(buf)
                    h.Write(buf[:n])
                    if err == io.EOF {
                        break
                    }
                }
                fmt.Printf("%x\n", h.Sum(nil))
            case "sha1":
                h := sha1.New()
                for {
                    n, err := f.Read(buf)
                    h.Write(buf[:n])
                    if err == io.EOF {
                        break
                    }
                }
                fmt.Printf("%x\n", h.Sum(nil))
            default :
                fmt.Printf("參數有誤\n")
        }
    }
    
  • 編譯運行:


    run.jpg
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容