对称加密、非对称加密、哈希和数字签名分别解决什么问题?

先理解原理和示例,再练习完整口述与追问。

对称加密(AES-GCM)同一密钥加解密,速度快,难点是密钥分发;非对称加密用公钥和私钥,适合密钥交换和签名;哈希(SHA-256)生成不可逆摘要,用于完整性校验;数字签名用私钥对摘要签名、公钥验证,证明来源且未被篡改。HTTPS 组合使用它们。

对称加密双方持有相同密钥,适合加密大量数据,但如何安全地把密钥交给对方是问题。非对称算法(RSA、ECDHE、ECDSA、Ed25519)中公钥可以公开,ECDHE 等密钥交换让双方在不安全信道上协商出同一个会话密钥。

哈希不是加密,无法解密,只能比对;用于文件完整性(分片上传校验、SRI)。HMAC 在哈希中加入共享密钥,能证明消息来自持有密钥的一方。数字签名由私钥生成,任何人用公钥验证;证书则是 CA 对“这个域名对应这个公钥”的签名声明。

HTTPS 握手中,证书和签名用于认证服务器身份,ECDHE 协商会话密钥,之后数据用 AES-GCM 或 ChaCha20 等对称算法加密并校验完整性。

JWT 的 HS256 使用 HMAC,签发方和验证方共享同一个密钥;RS256 用私钥签名,验证方只需公钥,适合多个服务验证同一认证中心签发的令牌。用户密码在服务端应使用加盐的慢哈希(bcrypt、Argon2)存储,而不是 MD5 或可逆加密。

前端用 RSA 加密密码不能替代 HTTPS,攻击者能篡改页面中的加密脚本;客户端先哈希再提交,哈希值就变成了新的密码。MD5、SHA-1 不能用于安全场景。浏览器的 Web Crypto API 只在安全上下文可用。

对称加密双方用同一个密钥,速度快,但密钥分发困难;非对称加密有公钥私钥,常用来交换密钥和做签名;哈希是不可逆摘要,用于校验完整性,不是加密;数字签名是私钥对摘要签名、公钥验证,证明来源和未篡改,证书就是 CA 的签名。HTTPS 正是用证书签名认证服务器,ECDHE 协商会话密钥,再用对称算法加密数据。