密码学基础

对称 vs 非对称加密

类型密钥模型速度使用场景算法
对称加密同一密钥加密/解密大量数据加密AES-256、ChaCha20
非对称加密公钥加密,私钥解密密钥交换、数字签名RSA-2048+、ECDSA、Ed25519
混合加密非对称交换对称密钥快+安全TLS、PGP、SignalRSA/ECDH + AES

哈希函数参考

算法输出大小状态适用
MD5128 位已破解仅用于校验和(非安全场景)
SHA-1160 位已废弃仅遗留系统
SHA-256256 位安全数据完整性、JWT、证书
SHA-512512 位安全高安全级别完整性校验
bcrypt60 字符安全(慢速)密码哈希
Argon2id可变密码最佳选择密码哈希(OWASP 推荐)
BLAKE3256 位安全快速通用哈希

Go 中的 AES 加密

// AES-256-GCM(认证加密) func encrypt(plaintext, key []byte) ([]byte, error) { block, err := aes.NewCipher(key) // key 必须是 32 字节(AES-256) if err != nil { return nil, err } gcm, err := cipher.NewGCM(block) if err != nil { return nil, err } nonce := make([]byte, gcm.NonceSize()) if _, err = io.ReadFull(rand.Reader, nonce); err != nil { return nil, err } return gcm.Seal(nonce, nonce, plaintext, nil), nil }

TLS 握手概述

步骤说明
1. ClientHello客户端发送支持的 TLS 版本、加密套件、随机数
2. ServerHello服务端选择 TLS 版本、加密套件,发送证书
3. 证书验证客户端对照可信 CA 验证服务端证书
4. 密钥交换ECDHE 生成共享密钥而不传输它
5. 完成双方派生会话密钥;开始加密通信