同じ入力条件でHashを生成・照合する
文字列またはローカルファイルから5方式のDigestをBrowser内で生成し、既知のHEX・Base64値と比較できます。
SHA-256ハッシュを生成する結論:AlgorithmとUTF-8 Byte列を固定し、生成した64文字のHEX値を確認する
TextはTextEncoderでUTF-8 Byte列へ変換し、そのByte列をSHA-256へ渡します。Digestは32 Byteで、HEX表示では1 Byteを2文字で表すため64文字です。
同じ見た目でもEncoding、改行、Space、Unicode Code Point列が異なれば別Hashです。SHA-256で暗号化したとは呼びません。
現行ツールは5方式を一括生成します。結果表のSHA-256行と、選択中のHEX/Base64形式を確認してください。
String・Byte列・Digestの三段階を確認する
Hash Functionが直接受け取るのは文字の意味ではなくByte列です。入力を保存・送信する環境と同じEncodingへ揃えます。
現行Text ModeはUTF-8固定で、BOM付与やUnicode正規化をしません。Shift_JISを指定する機能もありません。
| 確認項目 | 確認方法 | 判断 |
|---|---|---|
| Algorithm | 結果表のSHA-256行 | 他方式と混同しない |
| Encoding | Text ModeはUTF-8 | 比較元と一致 |
| 入力 | 改行・Spaceを含めて確認 | 勝手にtrimしない |
| 出力 | HEX 64文字またはBase64 | 同じ表現で比較 |
ハッシュ値生成・照合ツールで確認する手順
- テキストを選び、原文を変更せず貼り付けます。
- 表示形式をHEXにし、必要なら小文字・大文字を選びます。
- ハッシュ値を生成し、SHA-256行を確認します。
- 必要なら照合する値を入力して一致表示を確認します。
空文字列はText Modeでは生成できません。空DataのSHA-256は0 Byte FileをFile Modeで確認できます。
SHA-256の入力と出力を混同しない
String "hello"
-> UTF-8 bytes 68 65 6c 6c 6f
-> SHA-256 digest (32 bytes)
-> HEX / Base64 text
HEXとBase64は同じDigest Byte列を異なる文字列へ表現できます。HEXとBase64を文字列のまま比較しても一致しません。
Hash・暗号化・Encoding・認証を分けて考える
| 処理 | 入力 | 出力・目的 | 元へ戻す操作 |
|---|---|---|---|
| Hash | 任意長のByte列 | 固定長Digest・整合性確認 | 復号を目的としない |
| 暗号化 | PlaintextとKey | Ciphertext・機密性 | 正しいKeyで復号 |
| Base64 | Byte列 | ASCII Textとして表現 | Decodeで元Byte列へ戻す |
| HMAC | Secret KeyとMessage | 認証Code・完全性とAuthenticity | 同じKeyで再計算して検証 |
| Password Hash | Password・Salt・Cost | 推測攻撃を高コスト化して照合 | Argon2id等の専用方式を利用 |
Hashは「SHA-256で暗号化」と表現しません。同じ入力Byte列と同じAlgorithmからは同じDigestが得られますが、異なる入力が世界で絶対に同じ値にならないとは説明しません。期待値の配布元が信頼できるかも別途確認します。
MD5とSHA-1はLegacy Systemや既存Checksumとの互換確認として扱い、新しい改ざん耐性が必要な用途へ推奨しません。Password保存へ高速な汎用SHA-256を単独利用せず、Argon2id、scrypt、bcrypt、PBKDF2等の用途別方式と適切な設定を選びます。
現行のハッシュ値生成・照合ツールで扱える範囲
| 項目 | 現行仕様 |
|---|---|
| 入力 | UTF-8テキスト、または複数のローカルファイル |
| アルゴリズム | SHA-512、SHA-384、SHA-256、SHA-1、MD5を一括生成 |
| 出力 | HEXまたはBase64。HEXは小文字・大文字を切替可能 |
| 照合 | 期待値を全結果と比較。HEXは大文字小文字を区別せず、Base64は区別 |
| 処理方式 | FileReaderで全体をArrayBufferへ読み、Web Worker内で計算 |
| 操作 | 個別Copy、全件Copy、全消去、処理Cancel、複数File処理 |
| 未対応 | SHA-224、SHA-3、HMAC、Encoding選択、BOM除去、改行変換、Unicode正規化、Streaming、Download |
| 空Data | Text欄の空入力はError。0 Byte FileはFile Modeで計算可能 |
Text ModeはTextEncoderでUTF-8 Byte列へ変換します。入力Textへtrim、改行統一、BOM除去、Unicode Normalizationは行いません。一方、照合欄だけは貼り付けたDigestの前後・途中の空白文字を除去して比較します。
SHA-1、SHA-256、SHA-384、SHA-512はWeb Crypto API、MD5はWorker内の実装で計算します。ファイルは名前や更新日時ではなく読み込んだByte列がHash対象です。
ブラウザ内処理と大きなファイルの制約
現行ツールは入力Text、File内容、生成Digest、期待DigestをDevelopToolsのServerや外部APIへ送信せず、LocalStorageやSessionStorageへ保存しません。Analyticsへ入力値を送る処理もありません。
- 機密Fileは信頼できる端末とBrowserで処理する
- Copy後はOSやBrowserのClipboard履歴へ残る可能性を考慮する
- Fileは全体をMemoryへ読み込むため、空きMemoryとBrowser制限を確認する
- 非常に大きいFileはStreaming対応のOS Command等も検討する
- 照合値は公式Siteや署名済みChannelなど信頼できる経路から取得する
SubtleCrypto.digest()はStreaming Inputを受け取らないため、現行実装もFile全体をMemoryへ読み込みます。Browser内処理はUploadを避けますが、端末上のMalwareや悪意あるExtensionまで防ぐ保証ではありません。
一次資料でAlgorithmと利用範囲を確認する
- NIST FIPS 180-4:Secure Hash Standard
- NIST:Hash Functions Policy
- MDN:SubtleCrypto.digest()
- OWASP:Password Storage Cheat Sheet
- Microsoft Learn:Get-FileHash
- GNU Coreutils:SHA-2 utilities
- OpenSSL Documentation:openssl-dgst
Algorithmの定義と移行方針はNIST、Browser APIはMDNとWeb Cryptography仕様、Password StorageはOWASP、OS Commandは各公式Documentationを優先します。記事中のCommandは利用中VersionのHelpでも確認してください。
具体例:helloをUTF-8としてSHA-256へ渡す
改行なしのhelloをText Modeへ入力し、HEX小文字でSHA-256行を確認します。
同じ入力・Encoding・Algorithmなら同じ64文字のHEX値になります。末尾Enterを加えると別の値です。
- helloを入力
- HEX小文字を選択
- 「ハッシュを生成」を押す
- SHA-256行をCopy
記事やTestへ掲載する値はDummy Dataだけを使用してください。
よくある質問
- SHA-256は暗号化ですか?
- いいえ。入力Byte列から固定長Digestを作るHash Functionです。Keyで元Dataへ復号する暗号化や、DecodeできるBase64とは目的と性質が異なります。
- Hashが一致すればFileは必ず安全ですか?
- 内容が期待Digestと一致したことは確認できますが、期待値の掲載元や配布経路まで自動的に信頼できるとは限りません。公式配布元、HTTPS、署名等も確認します。
- MD5やSHA-1を新規用途へ使えますか?
- Legacy互換の照合には残っていますが、新しいSecurity用途には推奨しません。指定がなければSHA-256以上を検討し、Protocolや配布元の指定へ合わせます。
- 入力内容はServerへ送信されますか?
- 現行DevelopToolsではText、File内容、生成Hash、期待Hashを外部APIへ送信せず、Browser内で処理します。