開発者向けセキュリティツールガイド

無料 ハッシュ · HMAC · AES · RSA · JWT · パスワード 登録不要 · データは保存しません · 読み込み後はオフラインでも利用可能

このガイドで紹介するツール

ハッシュ生成
MD5/SHA
HMAC 生成
HMAC-SHA
AES 暗号化
AES-256
RSA 暗号化
RSA-OAEP
JWT デコーダー
デコード
パスワード生成
生成
Base64
エンコード/デコード
URL エンコード
エンコード/デコード
最終更新:2026年9月28日  ·  v1.0
要点
開発で使うセキュリティツールの要点は?

ハッシュ、HMAC、暗号化、JWTの確認はブラウザーで安全に調べられます。入力データを外部へ送信せず、用途に合うアルゴリズムを選ぶことが重要です。

MD5、SHA-1、SHA-256、SHA-512

ハッシュ関数は任意の長さの入力から固定長のダイジェストを生成します。同じバイト列は同じ結果になりますが、改行の違いだけでも結果は変わります。ハッシュ生成ツールでチェックサムやテストデータを比較できます。

MD5は128ビット、16進数では32文字、SHA-1は160ビットです。どちらにも既知の衝突攻撃があるため、新しい署名や攻撃者を想定した完全性確認には使いません。MD5は偶発的な変更を見つける用途では残っています。

SHA-256とSHA-512はSHA-2系列で、256ビットと512ビットを出力します。SHA-512は64ビット環境で高速な場合がありますが、実装によります。高速ハッシュ単体でパスワードを保存せず、ソルト付きのArgon2id、scrypt、適切に設定したbcryptなどを使います。

HMACでAPIリクエストを署名

HMACはハッシュ関数と共有秘密鍵を組み合わせます。正しい値は内容の完全性と鍵を知っていることを示しますが、公的な身元証明ではありません。HMAC生成ツールで開発時の計算を確認できます。

AWS Signature Version 4はHMAC-SHA256、派生鍵、正規化したリクエストを使います。メソッド、パス、ヘッダー、本文のハッシュを指定された手順で処理する必要があり、本文だけをハッシュしてもAWS署名にはなりません。

GitHubは X-Hub-Signature-256、Stripeは Stripe-Signature でWebhook署名を送ります。Stripeの計算にはタイムスタンプも含まれます。元のリクエストバイト列を検証し、定時間比較とリプレイ対策を適用してください。JWT HS256もHMAC-SHA256を使います。

AESとRSAの違い

AESは同じ秘密鍵で暗号化と復号をする共通鍵方式です。鍵長だけでなくモードも重要です。AES-GCMは認証タグを持ち、同じ鍵でnonceを再利用してはいけません。AESツールでテストケースを確認できます。

RSAは公開鍵と秘密鍵を使います。入力サイズの制約と処理コストがあるため、大きなファイルではなく、ランダムな共通鍵を暗号化するのが一般的です。実際のデータはAESで処理します。

パディングなしのRSAは使わないでください。RSAツールはRSA-OAEPを使います。相互運用時はハッシュ設定と鍵形式を合わせます。RSA-OAEPによる暗号化とRSA署名は別の処理です。秘密鍵と復号済みデータは適切に保護します。

JWTの構造と注意点

コンパクトJWS形式の署名付きJWTは、ヘッダー、ペイロード、署名という三つのBase64url部分をドットで区切ります。{"alg":"HS256","typ":"JWT"} はHMAC-SHA256、RS256はSHA-256を使うRSA署名を示します。

ペイロードには対象の sub、発行者の iss、受信者の aud、有効期限の exp、発行時刻の iat などが含まれます。JWTデコーダーで読めますが、デコードは署名検証でもトークンを受理できる証明でもありません。

サーバー側で許可アルゴリズムを固定し、署名、発行者、受信者、有効期限を検証します。トークンの alg を無条件に信用したり、誤って none を許可したりしないでください。JWS署名はペイロードを暗号化しないため、機密性が必要ならJWEなどの仕組みが必要です。

よくある質問

パスワードのハッシュ化に SHA-256 を使えますか?

いいえ。SHA-256 は高速な汎用ハッシュのため、パスワードを総当たりしやすくなります。代わりに bcrypt、scrypt、Argon2 を使ってください。これらは意図的に遅く、メモリを多く消費するよう設計されています。パスワードジェネレーターは強力なパスワードを生成しますが、保存はサーバー側で bcrypt/Argon2 を使うべきです。

エンコードと暗号化の違いは何ですか?

エンコード(Base64 など)は互換性のためにデータを変換するもので、鍵なしで元に戻せます。暗号化(AES など)は機密性を守るもので、正しい鍵がなければ元に戻せません。Base64 をセキュリティ対策として使ってはいけません。

JWT が期限切れかどうかを確認するにはどうすればよいですか?

JWTデコーダーでexpを確認し、現在のUnix時刻と比較します。期限が切れていなくても署名が有効とは限りません。サーバーで署名、発行者、受信者も検証してください。

ブラウザーでパスワードを生成しても安全ですか?

はい、crypto.getRandomValues() を使う場合は安全です。パスワードジェネレーターはこれを使っています。これはブラウザーの CSPRNG で、オペレーティングシステムが鍵生成に使うのと同じエントロピー源です。

AES の鍵サイズはどれを使うべきですか?

新規のアプリケーションにはすべて AES-256 を使いましょう。AES-128 も既知の攻撃に対しては技術的に安全ですが、AES-256 はより大きな安全マージンを提供します。最新のハードウェアではパフォーマンスの差はごくわずかです。