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%安全,永远不会离开浏览器。此工具使用Web Crypto API(crypto.subtle.generateKey)完全在您的设备上生成密钥——与HTTPS/TLS连接使用的加密引擎相同。没有密钥材料会传输到任何服务器。
RSA和Ed25519有什么区别?
RSA是一种广泛使用的算法,支持2048-4096位密钥的加密和签名。Ed25519是一种现代椭圆曲线算法,仅支持签名/验证,但提供更小的密钥(256位)、更快的操作和相当于RSA-3072的安全性。GitHub和GitLab推荐使用Ed25519进行SSH认证。
PEM和JWK格式是什么?
PEM是一种文本格式,将Base64编码的密钥数据包装在'-----BEGIN PRIVATE KEY-----'等标记之间。它是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();