RSA鍵ペアジェネレーター - RSA&Ed25519 オンライン
ブラウザでRSA(2048/4096ビット)およびEd25519鍵ペアを生成。PEMまたはJWK形式でエクスポート — 100%クライアントサイド、サーバー送信なし。
よくある質問
RSA鍵ペアジェネレーターとは何ですか?
RSA鍵ペアジェネレーターは、RSAアルゴリズムを使用して数学的に関連付けられた暗号鍵のペア(公開鍵と秘密鍵)を作成するツールです。公開鍵はデータの暗号化や署名の検証に、秘密鍵はデータの復号や署名の作成に使用されます。このツールはブラウザのWeb Crypto APIを使用してサーバーにデータを送信せずに安全に鍵を生成します。
このツールの使い方は?
アルゴリズム(RSA-2048、RSA-4096、Ed25519)を選択し、出力形式(PEMまたはJWK)を選び、「鍵ペアを生成」をクリックします。ブラウザで両方の鍵が即座に生成されます。コピーボタンで鍵をコピーするか、.pemファイルとしてダウンロードできます。秘密鍵は安全に保管し、絶対に共有しないでください。
鍵データは安全ですか?サーバーに送信されますか?
鍵データは100%安全でブラウザの外に出ることはありません。このツールはHTTPS/TLS接続に使用されるのと同じWeb Crypto API(crypto.subtle.generateKey)を使用してデバイス上で完全に鍵を生成します。サーバーへの鍵素材の送信も、分析による追跡も、ブラウザタブのメモリ以外へのデータ保存もありません。
RSAとEd25519の違いは何ですか?
RSAは2048〜4096ビットの鍵サイズで暗号化と署名の両方をサポートする広く使用されているアルゴリズムです。Ed25519は署名/検証のみをサポートする現代的な楕円曲線アルゴリズムですが、より小さな鍵(256ビット)、高速な演算、RSA-3072と同等のセキュリティを提供します。Ed25519はGitHubとGitLabがSSH認証に推奨しています。
PEMとJWK形式とは何ですか?
PEMは「-----BEGIN PRIVATE KEY-----」のようなヘッダー/フッターの間にBase64エンコードされた鍵データを包むテキスト形式です。SSH、OpenSSL、TLS証明書の標準です。JWK(JSON Web Key)はRFC 7517で定義されたJSON形式で、Webアプリケーション、JWTライブラリ、OAuth/OIDCプロバイダーで一般的に使用されます。
生成した鍵をSSH認証に使用できますか?
はい、いくつかの注意点があります。このツールはPKCS#8/SPKI PEM形式で鍵を生成します。最新のOpenSSHはPKCS#8 PEMを直接サポートしています。秘密鍵をchmod 600権限のファイルに保存し、「ssh -i key.pem user@host」で使用してください。OpenSSHネイティブ形式に変換するには「ssh-keygen -p -m pem -f key.pem」を使用してください。
コード例
// RSA-2048 Key Pair Generation (Web Crypto API)
async function generateRSAKeyPair(bits = 2048) {
const keyPair = await crypto.subtle.generateKey(
{
name: 'RSA-OAEP',
modulusLength: bits,
publicExponent: new Uint8Array([1, 0, 1]),
hash: 'SHA-256',
},
true,
['encrypt', 'decrypt']
);
const privDer = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);
const pubDer = await crypto.subtle.exportKey('spki', keyPair.publicKey);
const toPem = (der, label) => {
const b64 = btoa(String.fromCharCode(...new Uint8Array(der)));
const lines = b64.match(/.{1,64}/g).join('\n');
return `-----BEGIN ${label}-----\n${lines}\n-----END ${label}-----`;
};
console.log(toPem(privDer, 'PRIVATE KEY'));
console.log(toPem(pubDer, 'PUBLIC KEY'));
}
generateRSAKeyPair();