SHA-256でのファイルハッシュ
Web Crypto APIを使用してブラウザで直接SHA-256ファイルハッシュを計算。ファイルハッシュの仕組み、大きなファイルのストリーム処理、実用的なアプリケーションを解説します。
詳細な説明
SHA-256でファイルをハッシュするとは、ファイルの全内容から固有の256ビットフィンガープリントを計算することです。ファイルの全バイトを読み取り、1バイトでも変更されると完全に変わる固定長ダイジェストを生成します。最新のブラウザではWeb Crypto APIを使用してこの操作を完全にクライアントサイドで実行できます。
ブラウザベースのファイルハッシュ:
Web Crypto APIのcrypto.subtle.digest('SHA-256', buffer)はArrayBufferを受け取りハッシュを返します。ファイルの場合、FileReader APIまたは新しいFile APIのfile.arrayBuffer()で読み取ります。ハッシュ計算はブラウザのネイティブ暗号実装で実行されるため、同じC/C++ライブラリを使用するコマンドラインツールと同等の速度です。
大きなファイルの処理:
小さなファイル(100MB未満)はメモリに全体を読み込んでハッシュできます。大きなファイルではメモリ枯渇を避けるためストリーミングが必要です。Web Crypto APIのdigest()メソッドは直接ストリーミングをサポートしませんが、インクリメンタルハッシュライブラリやWebAssemblyのSHA-256実装を使用できます。
ファイルハッシュの用途:
開発者はビルドシステムやキャッシュで変更検出にファイルをハッシュします(ハッシュの変更がリビルドをトリガー)。クラウドストレージは重複検出にハッシュを使用します(コンテンツアドレッサブルストレージ)。フォレンジックアナリストは証拠ファイルのハッシュで管理の連鎖を証明します。バックアップシステムは効率的な増分バックアップにファイルハッシュを使用します。
プラットフォーム間のハッシュ比較:
SHA-256はツールやOSに関係なく同じハッシュを生成します。Linuxのsha256sum、macOSのshasum、このブラウザツールで同じファイルをハッシュすると同一の結果が得られます。ハッシュはファイルのバイト内容のみに依存し、ファイル名やメタデータには依存しません。
ユースケース
ファイルハッシュはビルドシステム、コンテンツアドレッサブルストレージ、フォレンジック証拠の整合性検証、転送ファイルの一致確認に不可欠です。