EdDSA (Ed25519) 加密解密
免费在线 EdDSA (Ed25519) 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。
结果将显示在这里...
输入 → 加密
使用指南
关于 EdDSA(Ed25519)
EdDSA(爱德华兹曲线数字签名算法)基于 Curve25519,是现代高性能数字签名方案,由 RFC 8032 标准化。它是 SSH(OpenSSH 默认)的标准签名算法,广泛应用于 TLS 1.3 客户端证书、GPG 子密钥、加密货币钱包(Solana、Cardano)和 JWT 签名。Ed25519 提供 128 位安全级别,密钥极短(各 32 字节),性能极快(单核每秒约 10 万次签名/验签操作)。
使用步骤
本工具支持 Ed25519 密钥对生成、消息签名和签名验证:
密钥格式
本工具中的 Ed25519 密钥使用紧凑的十六进制格式:
Ed25519 与 RSA 对比
Ed25519 和 RSA 都用于数字签名,但特性差异显著:
常见问题
Q: EdDSA 和 ECDSA 有什么区别?
A: EdDSA 和 ECDSA 都是椭圆曲线签名算法,但存在重要差异。ECDSA(使用 NIST 曲线 P-256、P-384)每次签名需要一个随机数(nonce k)——如果 nonce 重复使用或强度不足,私钥可能被完全恢复。2010 年索尼 PlayStation 3 私钥正是通过这种方式被提取的。EdDSA 使用从私钥和消息哈希确定性派生的 nonce,从数学上消除了 nonce 重用的可能性。EdDSA 还使用更安全的 Twisted Edwards 曲线(Ed25519 使用 Curve25519),专门设计以抵抗某些侧信道攻击。新实现中强烈推荐 EdDSA 而非 ECDSA。
Q: 为什么确定性签名更安全?
A: 在 ECDSA 中,每个签名的安全性取决于一个全新的密码学随机 nonce。如果攻击者获得两个使用相同 nonce 的签名(nonce 重用),或者 nonce 熵不足(弱随机性),则可以通过简单的代数方程恢复私钥。这不是理论——它已经破坏了真实系统(PS3、比特币钱包)。Ed25519 的确定性签名从私钥种子和消息的哈希值派生 nonce,因此始终唯一,不受外部随机源影响。签名路径中没有随机数生成器——完全消除了这类漏洞。
Q: 可以用 EdDSA 加密数据吗?
A: 不能。EdDSA(Ed25519)仅是数字签名算法——无法加密或解密数据。签名证明真实性(谁创建了消息),但不提供保密性(任何人都可以读取消息)。要加密数据,请使用对称加密算法,如 ChaCha20-Poly1305 或 AES-256-GCM。注意:X25519(基于 Curve25519 的相关但不同算法)可用于密钥交换(Diffie-Hellman),但与 Ed25519 不同,密钥不可互换。
Q: 如何生成 Ed25519 SSH 密钥?
A: 使用 OpenSSH 内置的密钥生成工具:ssh-keygen -t ed25519 -C "your_email@example.com"
这将生成 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。自 OpenSSH 6.5(2014年)起,Ed25519 已成为推荐的 SSH 密钥类型,现在是大多数发行版的默认选项。OpenSSH 生成的密钥使用不同的编码格式(PEM/OpenSSH 格式)而非本工具的十六进制格式,但基于相同的密码学算法。
Q: 64 字节的 Ed25519 签名包含什么内容?
A: Ed25519 签名由两个 32 字节的值组成:R(压缩的椭圆曲线点,由确定性 nonce 派生)和 S(由 nonce、私钥和消息哈希计算得出的标量值)。R 和 S 共同构成 64 字节的签名。验证时,使用公钥、消息和 S 重建 R,并检查其是否与签名中的 R 匹配。整个验证过程仅涉及 Curve25519 上的快速域运算——没有 RSA 那样的模幂运算。
Q: Ed25519 能抵抗量子计算机攻击吗?
A: 不能——对于足够强大的量子计算机而言。运行 Shor 算法的量子计算机可以通过求解椭圆曲线上的离散对数问题来破解 Ed25519。RSA 和 ECDSA 面临同样的威胁。但是,能够破解 128 位椭圆曲线安全性的量子计算机需要数千个错误率极低的逻辑量子比特——远超当前技术水平。对于后量子签名,NIST 已标准化 ML-DSA(原 CRYSTALS-Dilithium)和 SLH-DSA(SPHINCS+)。在经典威胁模型下,Ed25519 仍是当今最佳实用选择,已在生产系统中广泛部署。
使用场景
推荐:SSH 认证密钥
自 OpenSSH 6.5 起,Ed25519 是推荐的 SSH 密钥类型,现已成为大多数 Linux 发行版和 macOS 的默认选项。与 RSA-2048 相比,Ed25519 SSH 密钥更短(68 个字符 vs 400+)、生成更快、认证更快,且不受弱随机性攻击的影响。所有新 SSH 密钥请使用 ssh-keygen -t ed25519。将公钥添加到服务器的 ~/.ssh/authorized_keys 文件中。
- ✅ 新 SSH 密钥使用 ssh-keygen -t ed25519
- ✅ 用强密码保护私钥
- ✅ 将公钥自由分发到服务器
- ❌ 不要使用 RSA-1024;优先选择 Ed25519 而非 RSA-2048
推荐:代码签名与软件分发
Ed25519 非常适合签名软件发布、容器镜像和固件更新。确定性签名特性确保同一版本总是产生相同签名——使可复现构建验证可靠。Sigstore、minisign 和 signify 等工具使用 Ed25519。GPG 支持 Ed25519 签名子密钥。紧凑的 64 字节签名易于嵌入元数据或清单文件中。
- ✅ 用 Ed25519 签名发布包和校验和文件
- ✅ 使用 minisign 或 signify 进行简单文件签名
- ✅ 随发布包一起提供签名文件
- ❌ 不要在没有密码学签名的情况下分发软件
推荐:JWT 签名(EdDSA 算法)
JSON Web Token(JWT)通过 EdDSA 算法标识符(RFC 8037)支持 Ed25519。使用 EdDSA 签名 JWT 比 HMAC-SHA256(需要共享密钥)更安全,比 RS256(RSA)更高效。服务器用 Ed25519 私钥签名令牌;客户端和资源服务器用公钥验证。这实现了无状态、可扩展的认证——认证服务器和资源服务器之间无需共享密钥。
- ✅ 新项目使用 EdDSA(Ed25519)签名 JWT
- ✅ 在 /.well-known/jwks.json 端点发布公钥
- ✅ 定期轮换签名密钥
- ❌ 多服务验证时不要使用 HS256(对称)
推荐:API 请求认证
Ed25519 可以通过用私钥对请求载荷(方法 + 路径 + 时间戳 + 请求体哈希)签名来认证 API 请求。API 服务器使用客户端注册的公钥验证签名。这比 API 密钥(可能泄露的秘密)更安全,因为私钥永远不会离开客户端。与 HMAC-SHA256 相比,服务器无需存储密钥——即使服务器被攻破也不会影响所有客户端。
- ✅ 签名包含时间戳的请求载荷以防重放攻击
- ✅ 在服务端注册客户端公钥(无需共享密钥)
- ✅ 服务器不需要知道客户端密钥时使用 Ed25519 而非 HMAC
- 💡 在签名载荷中包含 nonce 或时间戳
可接受:加密货币钱包签名
Ed25519 是多种加密货币的原生签名算法,包括 Solana、Cardano、Stellar 和 Near Protocol。钱包地址从 Ed25519 公钥派生,交易由对应私钥签名。这是合法且重要的使用场景,但需注意加密货币私钥需要格外谨慎的存储(硬件钱包、安全飞地)——丢失或被盗的私钥意味着资金永久损失。
- ✅ 高价值密钥使用硬件钱包(Ledger、Trezor)
- ✅ 在安全的离线存储中备份助记词
- ❌ 不要将加密货币私钥存储在明文文件中
- ❌ 不要将此浏览器工具用于生产钱包密钥
不推荐:数据加密
Ed25519 无法加密数据——尝试将其用于加密是对算法的根本性误用。Ed25519 是签名算法:它接收消息并生成证明真实性的签名,不会将消息转换为密文。对于机密通信,请使用 ChaCha20-Poly1305 或 AES-256-GCM。如果需要非对称加密,请使用 RSA。
- ❌ 不要使用 Ed25519 进行数据加密
- ✅ 使用 AES-256-GCM 或 ChaCha20-Poly1305 进行对称加密
- ✅ 使用 RSA-OAEP 进行非对称加密
- 💡 签名 ≠ 加密——它们服务于不同的安全目标
最佳实践总结
- Ed25519 是签名算法——证明真实性但不加密。保密性请使用 AES-256-GCM 或 ChaCha20-Poly1305。
- 所有新签名场景优先选用 Ed25519,而非 RSA 和 ECDSA:更小的密钥、更快的操作、确定性签名。
- 私钥(64 个十六进制字符)必须保密。公钥(64 个十六进制字符)可以自由分发。
- 使用"消息|签名Base64"输入格式进行签名验证。管道符分隔符是必需的。
- SSH 请使用 ssh-keygen -t ed25519。Ed25519 是 OpenSSH、NIST 和主要安全指南推荐的现代标准。