本文へ移動
Develop Tools
← 使い方ガイドへ戻る

SHA-256ハッシュ値を生成する方法|文字列から簡単に計算

SHA-256を生成するときは、画面上の文字列ではなくEncoding後のByte列が入力です。Algorithm、UTF-8、改行、表示形式を固定してから計算します。

文字列をUTF-8 Byte列へ変換してSHA-256の固定長Digestを生成する流れ
文字列をUTF-8 Byte列へ変換してSHA-256の固定長Digestを生成する流れ

同じ入力条件で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行他方式と混同しない
EncodingText ModeはUTF-8比較元と一致
入力改行・Spaceを含めて確認勝手にtrimしない
出力HEX 64文字またはBase64同じ表現で比較

ハッシュ値生成・照合ツールで確認する手順

  1. テキストを選び、原文を変更せず貼り付けます。
  2. 表示形式をHEXにし、必要なら小文字・大文字を選びます。
  3. ハッシュ値を生成し、SHA-256行を確認します。
  4. 必要なら照合する値を入力して一致表示を確認します。

空文字列は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とKeyCiphertext・機密性正しいKeyで復号
Base64Byte列ASCII Textとして表現Decodeで元Byte列へ戻す
HMACSecret KeyとMessage認証Code・完全性とAuthenticity同じKeyで再計算して検証
Password HashPassword・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
空DataText欄の空入力は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と利用範囲を確認する

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を加えると別の値です。

  1. helloを入力
  2. HEX小文字を選択
  3. 「ハッシュを生成」を押す
  4. 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内で処理します。