SHA-256ハッシュ生成ツール

任意のテキストからSHA-256ハッシュを生成

入力テキスト

ローカルで実行 · シークレットの貼り付けも安全

SHA-256ハッシュ

SHA-256ハッシュがここに表示されます…

SHA-256ハッシュとは何か

SHA-256(Secure Hash Algorithm 256-bit)は、SHA-2ファミリーに属する暗号学的ハッシュ関数であり、NISTが2001年にFIPS 180-2(後にFIPS 180-4に改訂)の一部として公表しました。1文字、数ギガバイトのファイル、空文字列など、あらゆる入力に対して固定長256ビット(32バイト)のダイジェストを生成し、慣習的に64桁の16進数で表示されます。SHA-256は現在、本番システムで最も広く使われているハッシュ関数であり、TLS証明書チェーン、Bitcoinのプルーフ・オブ・ワーク、Subresource Integrity(SRI)、コード署名ワークフローなどを支えています。

SHA-256は一方向関数です。入力からハッシュを計算するのは高速(現代のハードウェアで毎秒数百メガバイト)ですが、その逆方向 — 特定のハッシュを生成する入力を見つけること — は計算上不可能です。この性質は「原像計算困難性(preimage resistance)」と呼ばれ、SHA-256をパスワードのハッシュ化(ソルトとキー・ストレッチングとの組み合わせ)、デジタル署名、データ完全性の検証に適したものにしています。MD5やSHA-1と異なり、完全なSHA-256に対する衝突攻撃や原像攻撃は実証されていません。

SHA-2ファミリーには6つの変種があります:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-256は32ビットワードを使用してブロックあたり64ラウンドの処理を行い、32ビットプロセッサ向けに最適化されています。SHA-512は64ビットワードと80ラウンドを使用し、64ビットプラットフォームではより高速になる場合があります。256ビットのダイジェストで十分なほとんどのアプリケーションでは、NIST・IETF・CA/Browser Forumともに引き続きSHA-256を既定の推奨として位置付けています。

オンラインSHA-256生成ツールを使う理由

SHA-256ハッシュの生成には通常、ターミナルコマンドか数行のコードが必要です。このブラウザベースのツールを使えば、何もインストールせず、コンテキストを切り替えず、スクリプトを書かずにSHA-256ダイジェストを計算できます。

ブラウザで即時ハッシュ計算
任意のテキストを貼り付けるか入力するだけで、SHA-256ダイジェストを即座に取得できます。Web Crypto APIがネイティブで計算を処理するため、JavaScriptライブラリのオーバーヘッドは一切ありません。
🔒
プライバシー優先の処理
入力したデータはデバイスの外に出ることはありません。すべてのハッシュ計算は、ブラウザに組み込まれたWeb Crypto APIを通じてローカルで実行されます。いかなるサーバーにもデータは送信されません。
📋
すぐにコピーできる出力形式
ワンクリックで小文字または大文字の16進数形式でハッシュを取得できます。パッケージマネージャー、CIパイプライン、ドキュメントのチェックサムと照合する際に便利です。
🔍
参照値のクロスチェック
ターミナルを開いたり使い捨てのコードを書いたりせずに、ダウンロードページ・SBOMマニフェスト・監査ログのSHA-256ダイジェストを素早く検証できます。

SHA-256の利用シーン

フロントエンド開発者 — Subresource Integrity
CDNでホストされているスクリプトやスタイルシートのSHA-256ハッシュを計算し、scriptタグやlinkタグのintegrity属性に設定することで、サプライチェーン改ざんから保護できます。
バックエンドエンジニア — APIリクエスト署名
多くのAPI(AWS Signature V4、Stripeウェブフックなど)はリクエストペイロードのSHA-256ハッシュを必要とします。開発やデバッグ時に参照用ハッシュを計算するためにこのツールを活用できます。
DevOps — 成果物の検証
本番インフラへのデプロイ前に、ダウンロードしたバイナリ、Dockerベースイメージ、TerraformプロバイダープラグインのSHA-256チェックサムを検証できます。
QAエンジニア — テストベクターの検証
NISTのテストベクター(FIPS 180-4のサンプル)とSHA-256の出力を照合することで、ハッシュ実装がエッジケースを正しく処理しているかを確認できます。
データエンジニア — 行レベルのフィンガープリント
複合キーやPIIフィールドをSHA-256でハッシュ化することで、データパイプライン内の重複排除や仮名化のための決定論的かつ不可逆なフィンガープリントを作成できます。
学生 — 暗号学の学習
SHA-256でアバランシェ効果を体験してみましょう。入力の1文字を変えるだけで、64桁の出力全体が予測不能な形で変化します。

SHA-2ファミリーの変種比較

SHA-256はFIPS 180-4で定義されたSHA-2ファミリーに属します。各変種はダイジェストサイズ、処理性能、セキュリティマージンのトレードオフが異なります。以下の表では、実際に目にする可能性が高いSHA-2の全変種を比較しています。

変種ダイジェストサイズ16進数の長さバイトサイズ主な用途
SHA-256256 bits64 hex chars32 bytesTLS, blockchain, code signing, JWTs, SRI
SHA-224224 bits56 hex chars28 bytesTruncated SHA-256 — rare, specific compliance
SHA-384384 bits96 hex chars48 bytesGovernment / CNSS, higher collision margin
SHA-512512 bits128 hex chars64 bytesDigital signatures, HMAC with large keys
SHA-512/256256 bits64 hex chars32 bytesSHA-512 speed on 64-bit CPUs, 256-bit output

SHA-256 対 SHA-1 対 MD5 対 SHA-3

適切なハッシュアルゴリズムの選択は、セキュリティ要件と互換性の制約によって決まります。SHA-256は実用上の最適解です。安全であり、Web Crypto APIを含めて幅広くサポートされており、ほとんどのワークロードに対して十分な速度があります。以下の比較表では、ハッシュ関数を選択する際に最も重要な特性を網羅しています。

特性SHA-256SHA-1MD5SHA-3-256
Digest size256 bits (64 hex)160 bits (40 hex)128 bits (32 hex)256 bits (64 hex)
Security statusSecureBroken (2017)Broken (2004)Secure
Collision resistance2^128 operationsPractical attackPractical attack2^128 operations
Block size512 bits512 bits512 bits1600 bits (sponge)
Rounds64806424
StandardFIPS 180-4FIPS 180-4RFC 1321FIPS 202
Web Crypto APIYesYesNoNo
Primary use todayTLS, blockchain, SRILegacy git onlyNon-security checksumsBackup standard

SHA-256の内部動作

SHA-256はMerkle–Damgård構造を通じて、入力を512ビット(64バイト)のブロック単位で処理します。アルゴリズムは最初の8つの素数の平方根の小数部から導出された8つの32ビット状態ワード(H0〜H7)を初期化します。各ブロックはビット演算(AND、XOR、NOT、右ローテート、右シフト)と最初の64個の素数の立方根から導出された64個のラウンド定数を使った64ラウンドの混合処理を経ます。

Input: "hello world"
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
ステップ説明
PaddingAppend a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
Message scheduleExpand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations.
CompressionProcess 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes.
OutputConcatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters.

アバランシェ効果により、入力の1ビットを反転させると出力ビットの約50%が変化します。この性質と2^128の衝突耐性の組み合わせが、SHA-256が2026年においてもセキュリティが求められるアプリケーションの基準推奨であり続ける理由です。

SHA-256コードサンプル

SHA-256はすべての主要言語とランタイムでネイティブに利用できます。ブラウザではWeb Crypto APIがライブラリなしで提供します。以下のサンプルは、Unicode入力の処理やファイルハッシュ化を含む実践的な使用パターンを示しています。

JavaScript (Web Crypto API)
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-256', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
Python
import hashlib

# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result)  # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"

# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"

# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
    sha = hashlib.sha256()
    for chunk in iter(lambda: f.read(8192), b''):
        sha.update(chunk)
    print(sha.hexdigest())
Go
package main

import (
    "crypto/sha256"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha256.Sum256(data)
    fmt.Printf("%x\n", hash)
    // → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}
CLI (Linux / macOS)
# Using sha256sum (Linux) or shasum (macOS)
echo -n "hello world" | sha256sum
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# macOS
echo -n "hello world" | shasum -a 256
# → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9  -

# Verify a file checksum
echo "b94d27b...  myfile.bin" | sha256sum -c
# → myfile.bin: OK

# Using openssl (cross-platform)
echo -n "hello world" | openssl dgst -sha256
# → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

よくある質問

SHA-256はまだ安全ですか?
はい。2026年時点で、完全なSHA-256に対する実用的な衝突攻撃・原像攻撃・第2原像攻撃は発見されていません。NIST・CA/Browser Forum・IETFはいずれも、TLS証明書・コード署名・デジタル署名にSHA-256を引き続き推奨しています。理論上の衝突耐性は2^128回の演算であり、現在の計算能力をはるかに超えています。
SHA-256とSHA-2の違いは何ですか?
SHA-2は6つのハッシュ関数のファミリー名です:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。SHA-256はその中で最も広く使われているメンバーです。ドキュメントに「SHA-2を使用すること」と記載されている場合、より長いダイジェストが必要でない限り、ほぼ常にSHA-256を指しています。
SHA-256は逆算または復号できますか?
いいえ。SHA-256は一方向ハッシュ関数であり、暗号化ではありません。鍵も復号プロセスも存在しません。元の入力を見つける唯一の方法はブルートフォース攻撃または辞書攻撃ですが、十分に複雑な入力に対しては計算上不可能です。短いまたは予測可能な入力(一般的なパスワードなど)に対しては事前計算されたレインボーテーブルが存在するため、パスワードのハッシュ化には常にソルトとbcryptやArgon2などの専用KDFを使用する必要があります。
SHA-256とSHA-3はどう違いますか?
SHA-3(Keccak、FIPS 202)は、SHA-256(Merkle–Damgård構造)とは全く異なる内部構造(スポンジ構造)を使用しています。SHA-256とSHA-3-256はともに256ビットのダイジェストを生成し、同等の衝突耐性を持ちます。SHA-3はSHA-2が破られた場合の代替として設計されましたが、SHA-2は現在も破られていません。SHA-256はより広いランタイムサポートを持ちます — 特にWeb Crypto APIはSHA-256をサポートしていますが、SHA-3はサポートしていません。
SHA-256はパスワードのハッシュ化に適していますか?
直接は適していません。SHA-256はもともと高速に設計されているため、パスワードの生のSHA-256ハッシュはブルートフォース攻撃やレインボーテーブル攻撃に対して脆弱です。パスワードの保存には、ソルトと設定可能なコストファクターによって攻撃を遅くする、bcrypt・scrypt・Argon2idなどの専用の鍵導出関数を使用してください。
BitcoinはなぜダブルSHA-256を使用するのですか?
BitcoinはブロックヘッダーとトランザクションIDにSHA-256(SHA-256(data))(hash256とも呼ばれる)を計算します。二重適用は長さ拡張攻撃を防ぐためです。長さ拡張攻撃とは、攻撃者が元の入力を知らずにメッセージにデータを追加して有効なハッシュを計算できる攻撃です。これはMerkle–Damgård構造のハッシュが持つ性質であり、単一パスのSHA-256では防げません。
Subresource Integrity(SRI)とは何で、SHA-256とどう関係しますか?
SRIはW3Cの仕様で、ブラウザが取得したリソース(スクリプト、スタイルシート)が改ざんされていないことを検証できるようにします。期待するファイル内容のBase64エンコードされたSHA-256(またはSHA-384/SHA-512)ハッシュを含むintegrity属性を追加します。ブラウザはダウンロードしたファイルのハッシュを計算し、ハッシュが一致しない場合は実行を拒否します。SHA-256はSRIがサポートする最小アルゴリズムです。