本文へスキップ

ハッシュジェネレーター

ハッシュジェネレーターは、入力テキストのハッシュ値を自動生成するオンラインツールです。MD5、SHA-1、SHA-256、SHA-512アルゴリズムをサポートし、すべてのハッシュ値をリアルタイムで生成します。

📝 入力テキスト

✨ 生成されたハッシュ

MD5128-bit
SHA-1160-bit
SHA-256256-bit ⭐ 권장
SHA-512512-bit

ハッシュ関数は任意のサイズのデータを固定サイズの値に変換します。パスワード保存、ファイル整合性検証などに使用されます。SHA-256が現在最も推奨されるアルゴリズムです。

機能

  • 複数のアルゴリズム: MD5、SHA-1、SHA-256、SHA-512をサポート
  • リアルタイム生成: 入力に応じて自動的にハッシュを生成
  • ワンクリックコピー: ハッシュ値をクリックしてクリップボードにコピー
  • 明確な表示: 各アルゴリズムのハッシュを個別に表示

ハッシュ関数とは?

ハッシュ関数は、任意の長さのデータを固定長の値に変換します。主な特徴:

  1. 決定論的: 同じ入力は常に同じ出力を生成
  2. 高速計算: ハッシュ生成が高速
  3. 雪崩効果: わずかな入力変更で大きな出力変更
  4. 一方向: ハッシュから元のデータを復元できない
  5. 衝突耐性: 異なる入力は異なるハッシュを生成すべき

サポートされているアルゴリズム

MD5(128ビット)

Message-Digest Algorithm 5

  • 出力長: 32文字(128ビット)
  • 状態: 暗号的に破られています - セキュリティ用途には非推奨
  • 使用例: チェックサム、非セキュリティアプリケーション
  • 速度: 非常に高速
入力: Hello World
MD5: b10a8db164e0754105b7a99be72e3fe5
セキュリティ警告

MD5は暗号用途には安全ではありません。衝突が生成可能であり、攻撃に対して脆弱です。非セキュリティアプリケーションのみに使用してください。

SHA-1(160ビット)

Secure Hash Algorithm 1

  • 出力長: 40文字(160ビット)
  • 状態: セキュリティアプリケーションでは非推奨
  • 使用例: Gitコミット、レガシーシステム
  • 速度: 高速
入力: Hello World
SHA-1: 0a4d55a8d778e5022fab701977c5d840bbc486d0
非推奨通知

SHA-1はセキュリティ目的では非推奨です。衝突が実証されています。セキュリティアプリケーションにはSHA-256以上を使用してください。

SHA-256(256ビット)

Secure Hash Algorithm 256

  • 出力長: 64文字(256ビット)
  • 状態: 安全 - 現在推奨
  • 使用例: デジタル署名、証明書、ブロックチェーン、パスワードハッシュ
  • 速度: 中程度
入力: Hello World
SHA-256: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e
推奨

SHA-256はほとんどのセキュリティアプリケーションに推奨されるアルゴリズムです。優れたセキュリティと良好なパフォーマンスを提供します。

SHA-512(512ビット)

Secure Hash Algorithm 512

  • 出力長: 128文字(512ビット)
  • 状態: 安全 - 最高レベルのセキュリティ
  • 使用例: 高セキュリティアプリケーション、パスワードハッシュ
  • 速度: SHA-256より遅い
入力: Hello World
SHA-512: 2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b

使用例

1. パスワード保存

// 間違い: 平文パスワードを保存しない
const password = 'mypassword123';
// user.password = password; // ❌ 絶対にこれをしないでください

// より良い方法: ソルト付きハッシュ(本番環境ではbcryptを使用)
import crypto from 'crypto';

function hashPassword(password, salt) {
return crypto.createHash('sha256')
.update(password + salt)
.digest('hex');
}

const salt = crypto.randomBytes(16).toString('hex');
const hashedPassword = hashPassword('mypassword123', salt);
// hashedPasswordとsaltをデータベースに保存
注意

パスワードハッシュには、単純なSHA-256の代わりにbcryptArgon2、またはPBKDF2のような専用アルゴリズムを使用してください。これらはブルートフォース攻撃に対抗するために意図的に遅く設計されています。

2. ファイルの整合性検証

// ファイルのハッシュを生成
async function generateFileHash(file) {
const buffer = await file.arrayBuffer();
const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

// ファイルの整合性を検証
const originalHash = 'a591a6d40bf420404a011733cfb7b190...';
const currentHash = await generateFileHash(downloadedFile);

if (originalHash === currentHash) {
console.log('ファイルは無傷です');
} else {
console.log('ファイルが変更または破損しています');
}

よくある質問

Q1. ハッシュを逆算できますか?

A: いいえ。ハッシュ関数は設計上一方向です。ハッシュから元のデータを復元することはできません。これはハッシュと暗号化を区別する基本的な特性です。

Q2. なぜMD5とSHA-1は安全ではないのですか?

A: 両方のアルゴリズムは衝突攻撃に対して脆弱であることが証明されており、異なる2つの入力が同じハッシュを生成できます。これによりハッシュ関数の基本的なセキュリティ前提が破られます。

Q3. どのアルゴリズムを使用すべきですか?

A:

  • 一般用途: SHA-256
  • 高セキュリティ: SHA-512
  • パスワード: bcrypt、Argon2、またはPBKDF2
  • レガシー互換性: 必要な場合のみ、それ以外はMD5/SHA-1を避ける

関連ツール