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 层自动完成。

标签:加密