🔐 一、什么是加密(Encryption)

加密是一种把“可读的信息(明文)”转换为“不可读的密文”的技术, 目的是:

即使数据被截获,也没人能看懂内容,除非拥有正确的密钥。

👉 形象地说:

就像把信装进一个只有你和收件人能打开的保险箱里。


🧩 二、加密的基本原理

加密通常有两个过程:

  1. 加密(Encryption): 明文 + 密钥 → 密文

    1
    
    Hello123 + 🔑 → 4ab3c29f...
    
  2. 解密(Decryption): 密文 + 密钥 → 明文

    1
    
    4ab3c29f... + 🔑 → Hello123
    

密钥(Key)是整个加密体系的核心,没有它就无法正确还原数据。


🧠 三、加密的两大类型

1️⃣ 对称加密(Symmetric Encryption)

  • 加密和解密使用同一把密钥
  • 优点:速度快。
  • 缺点:密钥传输不安全(如果密钥被别人拿到,就能解密)。

📦 常见算法:

  • AES(Advanced Encryption Standard)
  • DES(Data Encryption Standard)
  • ChaCha20

🧮 举个例子:

1
2
3
4
明文:  "MySecret"
密钥:  "123456"
加密  "4f2a9bcd"
解密  "MySecret"

📌 应用场景:

  • 本地文件加密
  • HTTPS 连接中的数据加密阶段
  • 数据库存储加密字段

2️⃣ 非对称加密(Asymmetric Encryption)

  • 使用两把密钥: 公钥(Public Key)私钥(Private Key) 一对密钥互为“锁和钥匙”关系。
  • 用公钥加密的内容,只能用私钥解密。 用私钥加密(签名)的内容,只能用公钥验证。

📦 常见算法:

  • RSA(最常见)
  • ECC(椭圆曲线加密)
  • ElGamal

🧮 举个例子:

1
2
3
明文: "Hello"
公钥: 🔓 用来加密
私钥: 🔐 用来解密

📌 应用场景:

  • 登录系统(比如 GitHub SSH Key)
  • HTTPS(TLS 握手阶段)
  • 数字签名与证书认证

🧰 四、常见加密算法

类型 算法 简介
对称 AES 现代加密标准,安全高效
对称 DES 早期算法,现已不安全
对称 ChaCha20 Google 推广的快速加密算法
非对称 RSA 最常见的公钥算法
非对称 ECC 更高效、更安全的新算法
混合 TLS 网络通信中结合两种加密方式使用

🌍 五、现实中的加密应用

场景 加密类型 举例
网站 HTTPS 通信 混合(RSA + AES) 浏览器访问网站
密码管理器 对称 KeePass / 1Password
邮件签名 非对称 PGP / S/MIME
文件加密 对称 ZIP / AES-256
数字货币 非对称 比特币使用椭圆曲线加密

🧮 六、浏览器中的简单加密示例

现代浏览器支持 crypto.subtle 进行 AES 加密:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
// 示例:使用 AES-GCM 加密
const enc = new TextEncoder();
const key = await crypto.subtle.generateKey(
  { name: "AES-GCM", length: 256 },
  true,
  ["encrypt", "decrypt"]
);

const data = enc.encode("Hello Encryption!");
const iv = crypto.getRandomValues(new Uint8Array(12));

const encrypted = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv },
  key,
  data
);

console.log(new Uint8Array(encrypted)); // 输出加密后的字节数据

🧭 七、总结一句话

加密 = “让别人看不懂,但我能解开的数据保护方式。”

  • 🔑 可逆(只要有密钥)
  • 💡 保证隐私
  • 🚀 用于通信、存储、认证