计算机基础2026年5月27日 01:10
什么是对称加密和非对称加密?对称加密:**加密和解密用同一把密钥**。快,适合加密大量数据。问题是怎么安全地把密钥传给对方——密钥传输过程中可能被截获。代表:AES、DES、ChaCha20。
非对称加密:**一对密钥——公钥加密、私钥解密**。公钥可以公开,任何人用公钥加密,只有持有私钥的人能解密。解决了对称加密的密钥分发问题,但计算慢,不适合大数据。代表:RSA、ECC。
实际应用中二者组合:用非对称加密传递对称密钥,之后的通信全部用对称加密。HTTPS 的 TLS 握手就是这样干的——RSA/ECDHE 交换密钥 → AES 加密通信内容。
## 追问
### HTTPS 用的是对称还是非对称?
都用。TLS 握手阶段用非对称(RSA/ECDHE)协商出一个对称密钥(Session Key),之后的数据传输用这个对称密钥做 AES 加密。取长补短。
### 为什么非对称加密更安全但更慢?
非对称加密的数学基础是大数分解(RSA)或椭圆曲线(ECC),运算量远大于 AES 的位运算。RSA 2048 位密钥加密几百字节就要几十毫秒,AES 加密几 MB 数据只要微秒级。
### 前端的 crypto.subtle 能做非对称加密吗?
能。`crypto.subtle.generateKey` 支持 RSA-OAEP 和 ECDH。但大部分场景 JD 不需要在前端做非对称加密——前端代码公开,私钥无处存放。通常前端只是用 HTTPS 加密传输,非对称部分在 TLS 层自动完成。
标签
加密
加密是使用使用辅助参数(称为加密密钥)的加密算法将信息(称为明文)转换为不可读形式(称为密文)的过程。只有拥有解密密钥的人才能轻松逆转该过程并恢复原始明文。
