m moji kit v1.0.9
#
生成

ハッシュ生成

テキストやファイルから MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512 のダイジェストを同時に計算します。MD5 は spark-md5、SHA は Web Crypto API。HEX (大文字 / 小文字) と Base64 の出力切替に対応。

サンプル
MD5
SHA-1
SHA-256
SHA-384
SHA-512

こんなときに使う

ダウンロードしたファイルの整合性を確認する

配布元が公開している SHA-256 と、自分が計算したハッシュを照合してファイル改ざんを検出します。本ツールはファイルアップロードに対応しており、サーバー送信はしません。

shasum -a 256 ./my-app.tar.gz

Git LFS / CDN のキャッシュキーを作る

コンテンツの SHA-256 をキーにすると、内容が変わった瞬間にキャッシュ無効化される(コンテンツアドレッシング)設計が可能です。

テストフィクスチャの安定 ID として使う

ある JSON サンプルの SHA-256 をテスト用 ID として使うと、内容が変われば自動で別 ID になります。冪等な ID 設計に便利。

ETag を手動で計算する

HTTP の ETag は弱比較なら任意ですが、強比較では本当のハッシュ値(MD5 / SHA-1 / SHA-256)を載せるのが慣習です。サーバー実装の検証に。

ログに含まれるハッシュ値の照合

セキュリティログに SHA-256 が記録されることがあります。攻撃者・正規ファイルどちらの値かを照合する用途。

重複検出(同一コンテンツ判定)

大量ファイルから同一内容を見つけるとき、SHA-256 が一致すれば同一とみなせます(衝突確率は事実上 0)。バックアップ重複排除にも。

よくあるエラーと対処

ERR ファイルが大きすぎてブラウザが固まる
原因
数百 MB を超えるファイルを一括で読み込んでハッシュ化すると、メモリ消費とイベントループのブロックでブラウザが固まります。
対処
本ツールは一括処理です。1 GB を超えるファイルは CLI(shasum / openssl)の使用を推奨します。チャンク処理が必要なら Web Worker + ストリーミングを実装します。
ERR 同じ文字列なのに別ツールと結果が違う
原因
改行コード(CRLF と LF)または末尾の改行有無によりバイト列が異なるため、ハッシュ値も変わります。
対処
改行コードを揃えてから比較してください。CLI で `printf` を使うと末尾改行を制御できます(echo は改行を付ける/付けないが OS 依存)。
ERR MD5 が脆弱と聞いたが使ってよいか分からない
原因
MD5 は衝突攻撃が現実的な計算量で可能なため、セキュリティ用途(署名・パスワード)では非推奨です。
対処
整合性チェックや非セキュリティ用途のキャッシュキーには現役で使えます。署名検証・パスワード保護には SHA-256 以上、または専用関数(bcrypt / argon2)を使ってください。
ERR Web Crypto API がエラー
原因
古いブラウザ(IE)や localhost ではない HTTP(http://)では Web Crypto が動作しません。
対処
本ツールは静的 HTTPS 配信前提です。社内ツール等で http の場合は localhost にプロキシ、または Modern ブラウザを使ってください。

CLI / 他言語でやる方法

shasum / sha256sum (coreutils)
echo -n 'hello' | shasum -a 256

-a で 1 / 224 / 256 / 384 / 512 を指定。ファイルなら shasum -a 256 file。

openssl
echo -n 'hello' | openssl dgst -sha256

openssl dgst -md5 / -sha1 / -sha512 等。-binary | base64 で Base64 出力。

Python
python -c "import hashlib; print(hashlib.sha256(b'hello').hexdigest())"

hashlib に md5 / sha1 / sha224 / sha256 / sha384 / sha512 が揃う。

よくある質問

MD5 はもう使ってはいけないのですか?
セキュリティ用途(署名・認証)は避けてください。衝突攻撃が現実的です。整合性チェックや非セキュリティのキャッシュキーには問題ありません。新規プロジェクトでは SHA-256 を選ぶのが無難です。
暗号学的ハッシュとパスワードハッシュの違いは?
暗号学的ハッシュ(SHA-256 等)は高速ですが、パスワードを総当たり攻撃から守るには遅さが必要です。パスワード保存には bcrypt / scrypt / argon2 のような専用関数を使ってください。
ハッシュから元データを復元できる?
理論上は不可能です(一方向関数)。短い既知データに対する逆引き辞書(rainbow table)が公開されているので、簡単な値はソルトなしだと推定可能。常にソルト + 専用関数を併用します。
HEX と Base64 はどちらを使うべき?
用途次第です。HEX は人間が読みやすく、Base64 はサイズが小さくなります(HEX の約 75%)。ファイルチェックサムは HEX、URL に乗せるなら Base64 が一般的です。
なぜ SHA-256 と SHA-512 を併記する?
用途で要求が違うためです。Bitcoin など特定プロトコルは SHA-256、Linux パッケージは SHA-512 を使うことが多く、出てきたハッシュ長から逆算して使う必要があります。
ファイルをアップロードしてもプライバシーは大丈夫?
ハッシュ計算はブラウザ内(FileReader → Uint8Array → crypto.subtle.digest)で完結します。サーバーへの送信はありません。ネットワークタブで通信が無いことを確認できます。
改行コードでハッシュが変わるのを防ぎたい
事前に改行コードを正規化してください。本サイトの「改行コード変換」ツールで LF に揃えてからハッシュ化するのが確実です。
SHA-3 や BLAKE2 はサポート?
本ツールでは未対応です。Web Crypto API が SHA-3 を持たないため。必要なら js-sha3 / blake2 ライブラリを別途導入する形になります。

もっと深く知る

公式ドキュメント / 仕様

学習サイト / 記事

※ Amazon へのリンクはアフィリエイトリンク(Amazon アソシエイト)を含みます。

関連ツール