検索
ホームページバックエンド開発Golangハッシュする golang ファイル

Golang は、強力に型指定され、高い効率と同時実行性を備えた静的にコンパイルされた言語です。 Golang には、さまざまな目的に使用できる豊富な標準ライブラリとサードパーティ ライブラリがあります。この記事では、Golang を使用してファイルをハッシュに変換する方法を説明します。

ハッシュは、任意の長さのデータを固定長の暗号化文字列にマッピングするテクノロジーです。ハッシュ アルゴリズムは、指定されたデータをより小さい固定の不可逆的な値にマッピングでき、ハッシュ アルゴリズムの結果はデー​​タの整合性検証やデジタル署名などに使用できます。多くのシナリオでは、ファイルのダウンロード時の検証やファイル送信の信頼性など、ファイルの整合性を検証するためにハッシュ アルゴリズムを使用する必要があります。

Golang の標準ライブラリは、MD5、SHA1、SHA256 などのさまざまなハッシュ アルゴリズムを提供します。これらのハッシュ アルゴリズムはすべて hash.Hash インターフェイスを継承しているため、同じ方法で操作できます。

以下は、Golang を使用してファイルの MD5 ハッシュ値を計算する方法を示す簡単なサンプル コードです:

package main

import (
    "crypto/md5"
    "fmt"
    "io"
    "os"
)

func main() {
    file, err := os.Open("testfile.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    h := md5.New()
    if _, err := io.Copy(h, file); err != nil {
        panic(err)
    }

    fmt.Printf("MD5 Hash: %x", h.Sum(nil))
}

このサンプル コードでは、os パッケージの Open メソッドを使用します。ファイルtestfile.txtが開きます。次に、md5 パッケージの New メソッドを使用して md5 ハッシュ オブジェクト h を作成し、io パッケージの Copy メソッドを使用してファイルの内容をハッシュ オブジェクトにコピーしました。最後に、ハッシュ オブジェクトの Sum メソッドを使用してハッシュ値を計算し、%x 形式で出力します。

MD5 に加えて、SHA1 や SHA256 などのハッシュ アルゴリズムも使用できます。md5.New を sha1.New または sha256.New に置き換えるだけです。たとえば、サンプル コードの MD5 ハッシュ値を計算する部分を変更して、SHA256 ハッシュ値を計算することができます。

h := sha256.New()
if _, err := io.Copy(h, file); err != nil {
    panic(err)
}

fmt.Printf("SHA256 Hash: %x", h.Sum(nil))

単一ファイルのハッシュ値の計算に加えて、Golang の標準ライブラリでは、次のような関数も提供されています。ディレクトリ内のすべてのファイルのハッシュを簡単に計算できるメソッド。たとえば、ファイルパス パッケージの Walk メソッドを使用して、次のようにディレクトリとサブディレクトリを走査し、すべてのファイルのハッシュ値を計算できます。

package main

import (
    "crypto/md5"
    "fmt"
    "io"
    "os"
    "path/filepath"
)

func main() {
    root := "."
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        if !info.Mode().IsRegular() {
            return nil
        }

        file, err := os.Open(path)
        if err != nil {
            return err
        }
        defer file.Close()

        h := md5.New()
        if _, err := io.Copy(h, file); err != nil {
            return err
        }

        fmt.Printf("%x  %s
", h.Sum(nil), path)
        return nil
    })
    if err != nil {
        panic(err)
    }
}

このサンプル コードでは、Walk メソッドを次のように使用します。ファイルパス パッケージ 現在のディレクトリとそのサブディレクトリが走査され、すべてのファイルの MD5 ハッシュ値が計算されて出力されます。 Walk メソッドのコールバック関数では、まず現在のファイルが通常のファイルかどうかを判定し、そうでない場合は nil を返し、そうでない場合はファイルを開いてハッシュ値を計算して出力します。

単一ファイルとディレクトリ内のすべてのファイルのハッシュ値を計算することに加えて、ファイルのハッシュ値をチャンク単位で計算することもできます。この方法は、ファイルをいくつかのブロックに分割し、各ブロックのハッシュ値を個別に計算し、最後にすべてのブロックのハッシュ値を連結してファイル全体のハッシュ値を計算することで、大きなファイルを処理する場合に使用できます。

要約すると、Golang は、ファイルのハッシュ値を簡単に計算できる、ファイルを操作するためのハッシュ アルゴリズムとメソッドを豊富に提供します。単一ファイルのハッシュ値を計算する場合でも、ディレクトリ内のすべてのファイルを計算する場合でも、大きなファイルのハッシュ値をチャンクに分けて処理する場合でも、Golang はシンプルで効率的なソリューションを提供します。

以上がハッシュする golang ファイルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
init機能と副作用:初期化と保守性のバランスinit機能と副作用:初期化と保守性のバランスApr 26, 2025 am 12:23 AM

抑制性を促進するために、抑制可能:1)エフェクスを最小化することを最小化します

ゴーを始めましょう:初心者のガイドゴーを始めましょう:初心者のガイドApr 26, 2025 am 12:21 AM

goisidealforforbeginnersandsutable forcloudnetworkservicesduetoitssimplicity、andconcurrencyfeatures.1)installgofromtheofficialwebsiteandverify with'goversion'.2)

並行性パターン:開発者のベストプラクティス並行性パターン:開発者のベストプラクティスApr 26, 2025 am 12:20 AM

開発者は、次のベストプラクティスに従う必要があります。1。ゴルチンを慎重に管理して、リソースの漏れを防ぎます。 2。同期にチャネルを使用しますが、過剰使用を避けます。 3。同時プログラムのエラーを明示的に処理します。 4. GomaxProcsを理解して、パフォーマンスを最適化します。これらのプラクティスは、リソースの効果的な管理、適切な同期の実装、適切なエラー処理、パフォーマンスの最適化を確保し、それによりソフトウェアの効率と保守性を向上させるため、効率的で堅牢なソフトウェア開発には重要です。

生産に進む:現実世界のユースケースと例生産に進む:現実世界のユースケースと例Apr 26, 2025 am 12:18 AM

goexcelsinproductionduetoitsperformanceandsimplicity、butrequirescarefulmanagement of sscalability、errorhandling、andresources.1)dockerusesgofores goforesesgorusesgolusesgotainermanagement.2)uberscalesmicroserviceswithgo、facingchallengesinservicememameme

GOのカスタムエラータイプ:詳細なエラー情報を提供しますGOのカスタムエラータイプ:詳細なエラー情報を提供しますApr 26, 2025 am 12:09 AM

標準のエラーインターフェイスが限られた情報を提供し、カスタムタイプがコンテキストと構造化された情報を追加できるため、エラータイプをカスタマイズする必要があります。 1)カスタムエラータイプには、エラーコード、場所、コンテキストデータなどを含めることができます。2)デバッグ効率とユーザーエクスペリエンスを改善する3)ただし、その複雑さとメンテナンスコストに注意する必要があります。

GOプログラミング言語を備えたスケーラブルなシステムを構築しますGOプログラミング言語を備えたスケーラブルなシステムを構築しますApr 25, 2025 am 12:19 AM

goisidealforbuildingscalablessystemsduetoitssimplicity、効率性、およびビルド・インコンカレンシsupport.1)

GOでINIT機能を効果的に使用するためのベストプラクティスGOでINIT機能を効果的に使用するためのベストプラクティスApr 25, 2025 am 12:18 AM

intionSingOrunautomaticallyは()andareuseforstingupenments andinitializingvariables.usemforsimpletasks、回避効果を回避し、測定可能性を測定することを検討します。

GOパッケージのINIT機能の実行順序GOパッケージのINIT機能の実行順序Apr 25, 2025 am 12:14 AM

goinitializeSpackages intheordertheyareimport extionsitions withinitionsiteintheirdefinition ordord、およびfilenamesdetermineTheOordCrossMultiplefiles.thisprocesccanbeandeanded by -dependenciessedieSiesは、このマイレアドカンフレシニティン化の対象となります

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター