用浅显的语言、清晰的结构,带你彻底搞懂 对称加密 与 非对称加密(RSA、ECC、AES、3DES),并附 Go 语言完整可运行源码。
目录
- 加密方式一览:对称 vs 非对称
- DES、3DES、AES 详解 & Go 示例
- RSA 与 ECC 原理、签名与加密流程
- 混合加密:实战场景优劣拆解
- 快速 FAQ:3 分钟扫清常见误区
对称加密 VS 非对称加密
| 关键词:对称加密 | 非对称加密 | 密钥数量 |
|---|---|---|
| 对称 | 1 把密钥同时用于加解密 | 极快、适合大数据 |
| 非对称 | 公钥加密,私钥解密(反之亦可签名) | 算法复杂、慢,但无需预先共享密钥 |
在区块链、Web3、支付通道等高并发场景下,“快”与“秘密分发”这两件事几乎不可能由同一把钥匙解决,于是 “混合加密” 诞生:用非对称方式协商或包裹对称密钥,再用对称密钥做高速数据加解密。
对称加密三大经典算法
DES:最短但已淘汰
- 56 bit 有效密钥,暴力破解数小时可解
- 用 3DES(即 Triple-DES)把密钥空间拉伸至 112/168 bit
- 代码示例:Go 实现 CBC 模式
// 核心就这句
block, err := des.NewCipher(key)👉 向代码爱好者展示如何在 10 行内完成 DES/CBC 加解密
FAQ ① DES 真的不能用了吗?
DES 只作为历史教材;生产环境请用 AES-256 或 ChaCha20-Poly1305。
3DES:过渡缓冲
- 三种密钥组合:168、112、56 bit(1-key 不推荐)
- 运算 3 倍耗时 ≈ 约 30 MiB/s(现代 CPU)
- 同样给出 CBC 模板,只需替换
NewTripleDESCipher
AES:现世代王者
- 分组 128 bit,密钥 128/192/256 bit
- 安全、快速,已被 TLS 1.3 吹爆
- Go 标准库代码长度 ≈ 60 行即可跑通 AES-CBC
block, _ := aes.NewCipher(key)
// AES-CBC 加解密套路完全与 DES 类似,只是 Padding 换 pkcs7FAQ ② 为什么区块链钱包里几乎不用 AES?
钱包更关注身份和数据签名,因此偏向非对称密钥体系。但在链下存储私钥 Keystore 时,AES 常被用来加密本地文件。
非对称加密全景
RSA:教科书式算法
- 密钥生成 = 找两个大素数 p、q
- 模运算 & 欧拉函数构成“大数分解难题”
- 公钥 (e,n) 公开,私钥 (d,n) 保存在 HSM 或安全芯片
// 2048 bit ≈ 256 bytes,密钥生成
privKey, _ := rsa.GenerateKey(rand.Reader, 2048)- 加密:OAEP/SHA-256 填充
- 签名:PSS/SHA-256
👇 实战小贴士
RSA 的“计算密集”特征让它更适合加密 对称密钥 Sealed Key(仅几十字节),而不是整条消息。
椭圆曲线 ECC:用短钥匙换高安全
- 256-bit ECC ≈ 3072-bit RSA 的强度
- Secp256k1 被比特币、以太坊使用;Ed25519 则被 Solana、Tendermint 采用
- 轻量级 IoT、移动端首选
FAQ ③ ECC 的私钥怎么存储?
私钥就是一个 32-byte 随机数:
sk := make([]byte, 32)
rand.Read(sk)
hex.EncodeToString(sk) // 输出直接作为助记词混合加密:真实世界唯一解
“先握手,再说话”
- 客户端→服务器:公钥加密 256-bit AES 密钥
- 后续数据流量全用 AES 处理,速度翻倍
“先用公钥验证服务器身份,再协商对称密钥”
- 即 TLS 握手全过程
区块链节点间的 p2p 加密
- 初始化用 ECC 交换临时密钥 → ChaCha20-Poly1305 做数据流加密
👉 点击之字形深入 TLS 1.3 的握手细节
- 初始化用 ECC 交换临时密钥 → ChaCha20-Poly1305 做数据流加密
代码实战对照表
| 算法 | 标准库函数 | 推荐模式 | 速度等级 |
|---|---|---|---|
| DES | des.NewCipher | CBC | 历史演示 |
| 3DES | des.NewTripleDESCipher | CBC | 中等 |
| AES-128 | aes.NewCipher | CBC/GCM | 高 |
| RSA | rsa.GenerateKey | OAEP/PSS | 只做“钥匙交换+签名” |
| ECC/ECDSA | ecdsa.GenerateKey 或 ed25519.GenerateKey | ECDSA/EdDSA | 高 |
快速 FAQ
| Q | A |
|---|---|
| 我的日常聊天真的用得到非对称加密吗? | 微信、Signal 到 HTTPS,所有端到端加密都在用混合模型,只是你看不见。 |
| AES-128 vs AES-256,哪个更划算? | 如果 CPU 支持 AES-NI,256 bit 几乎无性能损耗。保密要求极高场景直接上 256。 |
| 把私钥存云端安全吗? | 别存裸钥。应使用 加密 Keystore(AES+用户口令) 或 硬件钱包 储存。 |
| 我还能扛多久 RSA-1024? | 现已停止支持。NIST 明确 2024 后淘汰 RSA ≤ 2048 bit,改上 ECDSA / EdDSA。 |
| 怎样用 1 句话向老板解释混合加密? | “把法拉利(对称)锁进装甲车(非对称),既快又保险。” |
总结
- 对称加密 把大数据打得飞快;
- 非对称加密 解决了密钥怎么不见面就能分发的难题;
- 混合模型 才是区块链、电商、手机 App 里真正的幕后英雄。
按着上面的代码跑一遍,你会发现:原文与密文之间,其实只差一条优雅的 密钥链 而已。