crypto / hash
SHA ハッシュ生成
テキストのSHA-1・SHA-256・SHA-384・SHA-512ハッシュ値をブラウザ上で即座に計算します。 Web Crypto APIを使用し、入力内容はサーバーに送信されません。
アルゴリズム
256 bit64 chars
テキストを入力するとハッシュ値が表示されます
使い方
01- アルゴリズムボタン(SHA-1 / SHA-256 / SHA-384 / SHA-512)でハッシュ関数を選択します
- テキストエリアにハッシュ化したいテキストを入力します
- リアルタイムでハッシュ値が16進数で表示されます
- 「コピー」ボタンでハッシュ値をクリップボードにコピーできます
実装コード
02ブラウザ標準の crypto.subtle.digest のみで実装。外部ライブラリ不要でそのままコピーして利用できます。
export type HashAlgorithm = 'SHA-1' | 'SHA-256' | 'SHA-384' | 'SHA-512'
// Web Crypto API を使ったハッシュ計算(非同期)
export async function computeHash(
input: string,
algorithm: HashAlgorithm
): Promise<string> {
const encoder = new TextEncoder()
const data = encoder.encode(input)
const hashBuffer = await crypto.subtle.digest(algorithm, data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
// 8文字ごとにスペースを挿入して可読性を向上
export function formatHash(hashHex: string): string {
return hashHex.match(/.{1,8}/g)?.join(' ') ?? hashHex
}よくある使用例・注意点
03ファイルの整合性確認
ダウンロードしたファイルが改ざんされていないか確認するために、SHA-256ハッシュを比較します。配布元が公開するハッシュ値と一致すれば、ファイルは正常です。GitHubのリリースページでも sha256sum として掲載されることが多いです。
パスワードの保存(注意あり)
SHAはパスワード保存に適していません。SHA-256などは計算が高速なため、ブルートフォース攻撃に弱いです。パスワードの保存にはbcrypt・Argon2・scryptなど専用のKey Derivation Function(KDF)を使用してください。
データの一意識別子(チェックサム)
テキストやデータのSHA-256ハッシュは、内容が同じなら常に同じ値になります。キャッシュのキーや重複チェック、データの変更検知など、一意な識別子として活用できます。
アルゴリズムの選択基準
SHA-1は衝突攻撃が発見されており、セキュリティ用途には非推奨です。一般的なセキュリティ用途にはSHA-256を推奨します。SHA-384・SHA-512はより強力ですが、出力が長くなります。パフォーマンスよりセキュリティを重視する場合に選択してください。
Web Crypto APIの対応環境
このツールはブラウザ標準のWeb Crypto API(crypto.subtle)を使用しています。Chrome 37+、Firefox 34+、Safari 7+、Edge 12+で利用可能です。なお、crypto.subtleはセキュアコンテキスト(HTTPS または localhost)でのみ動作します。
関連ツール
04ソースコード
05このツールのソースコード(テストコードを含む)はGitHubで公開しています。 MITライセンスで自由に利用・改変できます。
GitHub でコードを見る →