DevToolBox

ハッシュ値の桁数でアルゴリズムを見分ける方法 - MD5/SHA-1/SHA-256/SHA-512

最終更新日: 2026-07-22公開日: 2026-07-22執筆: DevToolBox編集部

16進数表記されたハッシュ値なら、文字数から候補となるアルゴリズムを素早く絞れます。ただし、同じ長さの出力を持つ別方式やエンコード形式もあるため、桁数だけで100%断定はできません。

For hexadecimal digests, MD5 commonly has 32 characters, SHA-1 40, SHA-256 64, and SHA-512 128. Length is only a clue because other algorithms, encodings, salts, and storage formats can share or change these lengths.

1. ビット長と16進数文字数の関係

16進数1文字は4ビットを表します。1バイト(8ビット)は2文字になるため、16進数の文字数はハッシュのビット長を4で割った値です。

16進数文字数 = ビット長 / 4
SHA-256: 256 / 4 = 64文字
SHA-512: 512 / 4 = 128文字

2. アルゴリズムと桁数の対応表

アルゴリズムビット長バイト数16進数文字数
MD5128ビット1632文字
SHA-1160ビット2040文字
SHA-256256ビット3264文字
SHA-512512ビット64128文字

この対応はダイジェスト全体を16進数で表した場合です。ハイフン、接頭辞、ソルト、パラメータを含む保存形式には、そのまま当てはめられません。

3. 文字列から候補を絞る

5d41402abc4b2a76b9719d911017c592
# 32文字: MD5の可能性

2cf24dba5fb0a30e26e83b2ac5b9e29e
1b161e5c1fa7425e73043362938b9824
# 改行を除いて64文字: SHA-256の可能性

まず 0-9a-f(大文字も可)だけの16進数か確認します。候補を得たら、生成元の設定やドキュメントで確定します。

表示が複数行に折り返されていても、実データに改行が含まれるとは限りません。コピーした値の前後の空白を除き、文字種と長さを別々に確認するのが基本です。

4. bcryptや/etc/shadowは独自フォーマット

$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
|---|  |---------------- salt + hash ----------------|
識別子・コスト

bcryptは固定長の16進数ハッシュ値ではありません。$2b$10$... のようにアルゴリズム識別子、コスト、ソルト、ハッシュ本体を含む独自フォーマットで、通常は全体で60文字です。

Linuxの /etc/shadow でも、値全体は生のSHAダイジェストではなく、識別子やソルトなどを含むcrypt形式で保存されます。たとえば次の $6$ は一般にSHA-512-cryptを示しますが、後続の文字列全体を「128桁の生SHA-512」として数えるものではありません。

user:$6$rounds=5000$exampleSalt$encodedHashValue:...
     |            |            |
  方式ID      パラメータ等   エンコード済みハッシュ部

ここでの exampleSaltencodedHashValue は構造説明用です。実際のshadowエントリはOSや設定により異なり、アカウント名やパスワード変更日などはコロン区切りの別フィールドです。解析時は閲覧権限と機密性にも注意してください。

5. Base64・接頭辞・区切り記号を見分ける

見た目考えられる形式最初の確認
0-9a-f のみ16進数ダイジェスト文字数を数える
A-Z a-z 0-9 + / と末尾の =標準Base64の可能性デコード後のバイト数を見る
$2b$...bcrypt識別子とコストを読む
$6$...SHA-512-cryptの可能性crypt形式の仕様として読む
sha256: など方式を示す接頭辞付き生成元の仕様で接頭辞を確認

SHA-256の32バイトを標準Base64で表すと通常44文字(末尾のパディングを含む)になり、16進数の64文字とは一致しません。URL-safe Base64では +/-_ に置き換わり、パディングが省略される場合もあります。

6. 未知の値を推理する実践例

次の値だけを渡され、「何のハッシュか調べてほしい」と言われた場面を考えます。

2cf24dba5fb0a30e26e83b2ac5b9e29e
1b161e5c1fa7425e73043362938b9824
  1. 画面上では2行ですが、改行を除いて連結すると64文字です。
  2. 文字は 0-9a-f だけなので、16進数として妥当です。
  3. 64 × 4 = 256 ビットなので、SHA-256が有力候補になります。
  4. 接頭辞やソルトは見えませんが、別の256ビット方式や切り出したデータの可能性は残ります。
  5. 生成元のAPI仕様、コード、ファイルのチェックサム欄を確認してSHA-256か確定します。

参考として、この例は文字列 hello のSHA-256です。ただし、既知文字列との一致はこの例の由来を示すだけで、一般に未知の値の方式を長さだけから証明する方法ではありません。

7. hashidなどの判定支援ツール

hashidname-that-hash のように、文字種・長さ・接頭辞のパターンから候補を列挙するCLIツールもあります。大量のサンプルを一次分類するときは便利ですが、同じ特徴を持つ候補が複数表示されることがあります。

# 導入方法やオプションは各ツールの公式説明を確認
hashid "5d41402abc4b2a76b9719d911017c592"
name-that-hash "5d41402abc4b2a76b9719d911017c592"

これらはパターン推定を自動化するもので、暗号学的にアルゴリズムを証明するものではありません。また、未知の機密値をオンライン判定サイトへ送信すると漏えいにつながるため、組織のルールに従い、必要ならローカルで動くツールを使います。

8. 桁数だけでは断定できない理由

文字数はあくまで有力な手がかりです。確実な判定には、生成したコード、ライブラリ設定、データ形式の仕様書を確認してください。

さらにHMACは秘密鍵を使うメッセージ認証コードですが、HMAC-SHA-256の出力長は生のSHA-256と同じ256ビットになり得ます。長さが同じでも用途と計算方法は異なります。保存システムが任意の長さへ切り詰めている場合も、元方式は逆算できません。

よくある間違いと直し方

English summary

Hex uses two characters per byte, so character length equals bit length divided by four: MD5 is 32, SHA-1 40, SHA-256 64, and SHA-512 128. bcrypt is different: its roughly 60-character string includes an identifier, cost, salt, and hash. Treat length only as a clue. Other algorithms can share a bit length, Base64 changes the count, and salts or prefixes may be combined with the digest. Confirm the documentation for the generating system.

Structured password formats must be parsed according to their specifications. For example, a $6$ prefix in a Linux shadow password field commonly identifies SHA-512-crypt; the complete field is not a raw 128-character SHA-512 digest. Likewise, $2b$ identifies a bcrypt format containing parameters and a salt.

Tools such as hashid and name-that-hash can rank candidates from length, alphabet, and prefixes, but they are not definitive. Remove presentation-only whitespace, identify the encoding, inspect format markers, and then confirm the generating code, library configuration, or protocol documentation. Avoid uploading confidential values to online identification services.

関連ツール / Related tools

関連ガイド / Related guides