ECC (P-256) 加密解密

免费在线 ECC (P-256) 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。

National Standards
Other
输出

结果将显示在这里...

输入 加密

使用指南

关于 ECC/ECIES (P-256)

ECC/ECIES(椭圆曲线集成加密方案)基于 NIST P-256 曲线,是一种混合非对称加密方案。它将椭圆曲线 Diffie-Hellman(ECDH)密钥协商与 AES-256-GCM 认证对称加密相结合,在单次操作中同时提供机密性、完整性和真实性。密钥非常紧凑——P-256 私钥仅 32 字节,而 RSA-2048 需要 256 字节才能达到同等安全级别。

加密算法——非签名算法: ECC/ECIES 是一种加密算法,用于保护数据机密性。它与 ECDSA 完全不同——ECDSA 是一种签名算法,用于证明真实性但不加密数据。当您需要使用收件人的公钥向其发送机密消息时,请使用 ECIES。

使用步骤

本工具支持 ECIES 密钥对生成、加密(使用公钥)和解密(使用私钥):

1. 生成密钥对点击「Generate Key Pair」生成关联的私钥/公钥对。两个密钥均以 PEM 格式输出(-----BEGIN PRIVATE KEY----- / -----BEGIN PUBLIC KEY-----)。
2. 加密消息选择「Encrypt」模式。在输入框中输入明文,在密钥参数中粘贴 PEM 公钥,点击「Encrypt」——输出为包含临时公钥(epk)和密文(ct)的 JSON 对象。
3. 解密消息选择「Decrypt」模式。在输入框中粘贴 JSON 密文,在密钥参数中粘贴 PEM 私钥,点击「Decrypt」——输出为原始明文。
4. 安全存储私钥将私钥存储在安全位置(密码管理器、加密保险库、HSM)。公钥可以自由分享。一旦丢失私钥,所有加密给该密钥的消息将无法解密。
仅在浏览器中运行:所有密钥生成和加密操作完全在您的浏览器中通过 WebCrypto API 执行。密钥和消息不会传输到任何服务器。

输出格式

ECIES 加密产生一个包含两个字段的 JSON 对象:

epk(临时公钥)66 个十六进制字符 = 33 字节。这是发送方一次性密钥对的压缩 P-256 曲线点。接收方使用此值与自己的私钥通过 ECDH 重建共享密钥。
ct(密文)十六进制字符串。包含 AES-256-GCM 加密的明文,末尾附加 16 字节(32 个十六进制字符)的 GCM 认证标签。认证标签确保密文未被篡改。
输出示例{"epk":"02a3f1e2d4c5b6...","ct":"7f8e9d0c1b2a...f3e4d5c6b7a8"}
随机数(IV)12 字节的 AES-GCM 随机数通过 HKDF 密钥派生步骤确定性派生——它嵌入在密钥派生过程中,无需单独存储在 JSON 中。

ECIES 工作原理

ECIES 是一种混合加密方案,内部执行以下步骤:

步骤 1 — 生成临时密钥对发送方为每次加密操作生成一个全新的(临时)P-256 密钥对。该密钥对仅使用一次,之后立即丢弃。
步骤 2 — ECDH 密钥协商发送方通过 ECDH 计算共享密钥:shared_secret = ECDH(发送方临时私钥, 接收方公钥)。接收方也能用 ECDH(接收方私钥, 发送方临时公钥) 计算出相同的共享密钥。
步骤 3 — HKDF 密钥派生共享密钥通过 HKDF-SHA256 派生出 44 字节:前 32 字节作为 AES-256-GCM 加密密钥,后 12 字节作为 GCM 随机数(IV)。
步骤 4 — AES-256-GCM 加密使用派生的密钥和随机数对明文进行 AES-256-GCM 加密。输出为密文与 16 字节认证标签的拼接。
步骤 5 — 输出临时公钥(压缩格式,33 字节)和密文编码为十六进制字符串,以 JSON 对象形式返回。
前向保密:由于每次加密都使用全新的临时密钥对,即使接收方的长期私钥在未来被泄露,过去的密文也无法被解密。这一特性称为前向保密(或完美前向保密)。RSA-OAEP 不提供前向保密。

常见问题

Q: ECIES 和 RSA 加密有什么区别?

A: ECIES 和 RSA-OAEP 都是非对称加密方案,但在几个重要方面有所不同。密钥大小:P-256 私钥仅 32 字节,而 RSA-2048 需要 256 字节才能达到同等安全级别。速度:ECIES 操作比 RSA 显著更快。前向保密:ECIES 通过临时密钥对提供前向保密,RSA-OAEP 不提供。输出大小:ECIES 在每个密文中额外添加 33 字节的临时公钥;RSA 密文大小恰好等于密钥大小。对于新系统,ECIES 通常是比 RSA 更优的非对称加密选择。

Q: 什么是前向保密,为什么重要?

A: 前向保密(也称完美前向保密,PFS)意味着即使长期私钥在未来被泄露,过去的加密消息仍然安全。在 ECIES 中,每次加密都会生成一个全新的临时密钥对,使用后立即丢弃。共享密钥从临时私钥派生,加密完成后该私钥就不再存在。即使攻击者现在存储了密文,多年后获得了接收方的私钥,也无法解密旧消息,因为临时私钥已经消失。而 RSA-OAEP 直接使用接收方的长期公钥——一旦私钥被泄露,所有过去的密文都可以被解密。

Q: JSON 输出中的字段含义是什么?

A: ECIES 输出 JSON 包含两个字段:epk(临时公钥)是 66 个十六进制字符,代表发送方一次性密钥对的压缩 33 字节 P-256 曲线点。接收方需要此值来通过 ECDH 重建共享密钥。ct(密文)是一个十六进制字符串,包含 AES-256-GCM 加密的数据,末尾跟随 16 字节(32 个十六进制字符)的 GCM 认证标签。认证标签确保对密文的任何篡改在解密时都会被检测到。必须保留完整的 JSON——如果任何字段被修改或截断,解密将因认证错误而失败。

Q: 我能用同一个公钥加密多条消息吗?

A: 可以。您可以向同一个接收方公钥加密任意数量的消息。每次加密都会自动生成一个新的临时密钥对,因此每个密文都是独立的,使用不同的派生密钥和随机数,不存在随机数重用风险。接收方使用相同的私钥解密每条消息,但每次解密都会从不同密文中的不同临时公钥派生出不同的共享密钥。

Q: ECC/ECIES 是否能抵抗量子计算机攻击?

A: 不能。ECIES 基于椭圆曲线离散对数问题(ECDLP),足够大的量子计算机运行 Shor 算法可以解决此问题。RSA 同样面临这一威胁。但是,破解 P-256 需要数千个具有极低错误率的逻辑量子比特——远超目前的量子硬件水平。对于后量子非对称加密,NIST 已标准化 ML-KEM(前身为 CRYSTALS-Kyber)。对于当今的经典(非量子)威胁模型,ECIES 仍然是最佳实际选择。

使用场景

✅ 推荐:端到端加密消息

ECIES 非常适合发送方知道接收方公钥的端到端加密消息场景。每条消息都用接收方的公钥加密,只有接收方的私钥才能解密。内置的前向保密特性意味着即使接收方的私钥日后被泄露,之前发送的消息仍然受到保护。这与 Signal 等安全消息协议使用的原理相同。

推荐配置:
  • ✅ 将您的 PEM 公钥分发给发送方
  • ✅ 将 PEM 私钥保存在加密保险库或 HSM 中
  • ✅ 前向保密已内置——每条消息使用全新的临时密钥对
  • ❌ 不要将私钥分享给任何人,包括发送方
✅ 推荐:大数据的混合加密

ECIES 通常用于大文件的混合加密模式:使用 ECIES 安全传输一个 AES-256-GCM ChaCha20-Poly1305 对称密钥,然后用该密钥加密实际的大文件。ECIES 适合小载荷(密钥、令牌、短消息),而对称密码处理大量数据更高效。TLS、PGP 和大多数现实世界加密协议都采用这种模式。使用 X25519 进行密钥交换的标准化混合加密规范,请参阅 HPKE(RFC 9180)。

推荐配置:
  • ✅ 使用 ECIES 封装/传输对称数据加密密钥(DEK)
  • ✅ 使用 AES-256-GCM 或 ChaCha20-Poly1305 加密实际文件内容
  • ✅ 将 ECIES 封装的密钥与加密文件一起存储
  • ❌ 不要使用 ECIES 直接加密超过几 KB 的文件
✅ 推荐:替代 RSA-OAEP

对于目前使用 RSA-OAEP 进行非对称加密的新系统,P-256 ECIES 是推荐的现代替代方案。它提供同等或更好的安全性,密钥更小(32 字节 vs RSA-2048 的 256 字节),操作更快,并额外提供前向保密特性。迁移路径简单:生成 PEM 格式的新 ECC 密钥对,并更新加密/解密代码使用 ECIES 即可。

推荐配置:
  • ✅ 新的非对称加密需求优先选择 ECIES 而非 RSA-OAEP
  • ✅ P-256 (ECIES) 密钥比 RSA-2048 密钥小 8 倍
  • ✅ ECIES 提供 RSA-OAEP 无法实现的前向保密
  • ❌ 除非需要旧版兼容,否则新系统不要继续使用 RSA-OAEP
✅ 推荐:API 安全传输敏感数据

ECIES 可以保护 API 请求中的敏感数据——例如,在传输前用服务器公钥加密用户的信用卡号或个人数据。即使 TLS 被攻破,或请求在负载均衡器或代理处被拦截,载荷仍然处于加密状态,直到到达持有私钥的服务器才能解密。这有时被称为载荷级加密,在传输安全之外提供纵深防御。

推荐配置:
  • ✅ 向 API 客户端发布服务器的 PEM 公钥
  • ✅ 在发送前加密敏感字段(个人信息、支付信息)
  • ✅ 结合 TLS 实现纵深防御
  • 💡 每个请求自动使用全新的临时密钥——无需按请求轮换密钥
❌ 不推荐:直接加密大文件

ECIES 专为短消息和密钥封装设计,而非直接加密大文件。虽然技术上可行,但对大文件使用 ECIES 比对称密码效率低得多。正确的模式是混合加密:使用 ECIES 加密随机生成的 AES-256-GCM 密钥(32 字节),然后用该 AES 密钥加密实际文件。OpenPGP、CMS 和现代安全文件传输协议都采用这种方式。

推荐配置:
  • ❌ 不要使用 ECIES 直接加密超过几 KB 的文件
  • ✅ 使用 ECIES 加密随机生成的 AES-256-GCM 数据加密密钥(DEK)
  • ✅ 使用 DEK 和 AES-256-GCM 加密文件内容
  • 💡 存储:ECIES 加密的 DEK + AES 加密的文件内容

最佳实践总结

  • ECC/ECIES 是加密算法——提供机密性保护。它不是签名算法。数字签名请使用 ECDSA。
  • 前向保密已内置:每次加密生成全新的临时密钥对,即使私钥日后被泄露,过去的密文也仍然安全。
  • 对于大数据,使用混合加密:ECIES 封装密钥,AES-256-GCM 或 ChaCha20-Poly1305 加密数据本身。
  • 私钥(PEM 格式)必须保密。公钥(PEM 格式)可以自由分发给任何需要向您发送加密消息的人。

讨论与反馈

0 条评论