SHA-512 ハッシュ値生成ツール

テキスト、16進数のバイト列、ファイルの 512 ビット SHA-512 ダイジェストを計算して期待する値と照合し、同じ入力の SHA-384、SHA-256、SHA-1、MD5、CRC-32 も確認できます。

すべてのアルゴリズム

すべてブラウザ内で処理され、データはアップロードされません。

使い方

  1. テキストまたは16進数のバイト列を入力するか、「ファイルを開く」でファイルを選んで内容をハッシュ化します。
  2. 「出力形式」を選びます。sha512sum 形式のチェックサムには「16進数(小文字)」を、integrity 文字列には「Base64」を選びます。
  3. 期待する値を「比較対象」欄に貼り付けて照合します。16進数と Base64 のどちらでも受け付けます。
  4. SHA-384 が必要な場合は、「アルゴリズム」で選択するか、「すべてのアルゴリズム」の表からコピーします。

SHA-512 とは

SHA-512 は SHA-2 の中で最も出力が長い関数で、FIPS 180-4 と RFC 6234 で規定されています。SHA-256 が 32 ビットのワードで処理するのに対し、SHA-512 は 64 ビットのワード、1024 ビットのブロック、80 ラウンドを使い、512 ビットのダイジェストを出力します。16進数では 128 文字、Base64 では 88 文字です。約 256 ビットの衝突耐性は予見できるどんな攻撃もはるかに上回ります。また、ほかのハッシュ関数と同じく一方向であり、ダイジェストから入力を復元することはできません。

64 ビット演算を使うため、SHA-256 専用命令を持たない 64 ビットプロセッサでは、1 バイトあたりの処理が SHA-256 より SHA-512 のほうが速いことがよくあります。専用命令を備えた CPU では、通常 SHA-256 のほうが高速です。

SHA-384、SHA-512/256 などの切り詰め版

いくつかの標準ハッシュ関数は、SHA-512 を異なる初期値で実行し、出力を短く切り詰めたものです。

名前出力16進数の長さ主な用途
SHA-384384 ビット96TLS 1.3 の暗号スイート、サブリソース完全性(SRI)
SHA-512/256256 ビット64SHA-512 の速度で SHA-256 と同じ長さの出力を得る
SHA-512/224224 ビット56ほとんど使われない

初期値が異なるため、SHA-512/256 は SHA-512 の16進数表記の先頭 64 文字とは一致しません。また、切り詰め版は、完全な SHA-256 や SHA-512 が影響を受ける伸長攻撃にも耐性があります。このページで計算できるのは SHA-384 と SHA-512 です。SHA-512/256 が必要な場合は、openssl dgst -sha512-256 などの別のツールを使用してください。

Base64 の integrity 文字列とパスワードハッシュ

16進数表記はとても長いため、機械可読な形式では SHA-512 を Base64 で記述することがよくあります。サブリソース完全性(SRI)では、sha256-、sha384-、sha512- の後に Base64 のダイジェストを続けた値を指定できます。また、npm の package-lock.json にはパッケージごとに integrity 値が保存されており、通常は sha512- で始まります。ファイルを開き、「出力形式」で「Base64」を選んでから、プレフィックスを付けてください。

$6$ で始まる Linux のパスワードハッシュは sha512crypt です。これはソルト付きの SHA-512 を数千回繰り返したものなので、パスワードを単純に SHA-512 でハッシュ化した値と一致することはありません。ダイジェストがどれほど長くても、パスワードを SHA-512 で 1 回ハッシュ化しただけでは、総当たり攻撃ですぐに破られます。パスワードは Argon2id、scrypt、bcrypt、PBKDF2-HMAC-SHA512 で保存してください。

コマンドラインとコードで SHA-512 を計算する

sha512sum file.tar.gz                        # Linux
shasum -a 512 file.tar.gz                    # macOS
certutil -hashfile file.tar.gz SHA512        # Windows
Get-FileHash file.tar.gz -Algorithm SHA512   # PowerShell

# integrity 属性用の Base64 ダイジェスト
openssl dgst -sha512 -binary file.js | openssl base64 -A

# Python
hashlib.sha512(data).hexdigest()

// Node.js
crypto.createHash('sha512').update(data).digest('base64')

このページでは、ブラウザの Web Crypto API で SHA-512 を計算します。「すべてのアルゴリズム」の表には、同じ入力の SHA-384、SHA-256、SHA-1、MD5、CRC の値が表示されます。

エンコード例

入力 (UTF-8)SHA-512
Hello, World!374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
Base64.is44960f483bc929874301e2fb54f4337c84641ad12cb6b2639875e26e490664e65da046cf43eafb2ab4a47b5d3eb66637630af5cba841974bfaa4e372dd0453d2
你好5232181bc0d9888f5c9746e410b4740eb461706ba5dacfbc93587cecfc8d068bac7737e92870d6745b11a25e9cd78b55f4ffc706f73cfcae5345f1b53fb8f6b5

よくある質問

SHA-512 は SHA-256 より安全ですか?

安全性の余裕はより大きく、衝突耐性は SHA-256 の 128 ビットに対して約 256 ビットあります。ただし、どちらも破られておらず、総当たりで破れる範囲をはるかに超えています。形式で指定されている場合、お使いのハードウェアで高速な場合、より長いダイジェストが必要な場合は SHA-512 を選び、それ以外なら SHA-256 で十分です。

SHA-512 のハッシュ値は復号できますか?

いいえ。入力が 1 語でもディスクイメージ全体でも、SHA-512 のダイジェストは常に 64 バイトです。つまり、無数の異なる入力が同じダイジェストを共有しており、デコードできる情報はありません。ダイジェストは、推測した値のハッシュ値と比較することしかできません。逆引きサイトはこの方法でよく使われる単語やパスワードを見つけますが、予測できないデータが見つかることはありません。

SHA-512 のハッシュ値の長さはどれくらいですか?
64 バイトです。16進数では 128 文字、Base64 では == で終わる 88 文字になります。SHA3-512、BLAKE2b、Whirlpool も同じ長さなので、正体不明のダイジェストはハッシュ識別ツールに貼り付けて、どれに当てはまるかを確認してください。
SHA-512 と SHA3-512 は同じものですか?

いいえ。SHA3-512(FIPS 202)はまったく異なる設計である Keccak に基づいており、同じ入力でも異なるダイジェストになります。このページでは SHA-3 は計算できません。

同じに見える 2 つの文字列でハッシュ値が異なるのはなぜですか?

ハッシュ値はバイト列に対して計算されるからです。é のような文字は、1 つのコードポイントとしても、e と結合用のアクセント記号の組み合わせとしても保存できます。また、末尾のスペース、改行コード(LF または CRLF)、文字コード(UTF-8、UTF-16、Windows-1252)によってもバイト列は変わります。相手のシステムが使った「文字コード」を選ぶか、正確なバイト列を16進数で貼り付けてください。