密码学入门
密码学是保护信息安全的数学基础,是现代网络安全的基石。
加密和解密使用相同的密钥。
| 算法 | 密钥长度 | 特点 |
|---|---|---|
| AES | 128/256 bits | 目前最广泛使用的对称加密 |
| ChaCha20 | 256 bits | 移动设备上性能优异 |
from cryptography.fernet import Fernetkey = Fernet.generate_key()cipher = Fernet(key)encrypted = cipher.encrypt(b"敏感数据")decrypted = cipher.decrypt(encrypted)使用公钥加密、私钥解密,安全性更高:
- RSA:广泛使用的公钥加密算法
- ECC:椭圆曲线加密,相同安全级别需要更短的密钥
- HTTPS 握手(TLS)
- 数字签名
- SSH 认证
- 区块链交易
将任意长度的数据映射为固定长度的摘要:
- MD5:已不推荐使用(存在碰撞攻击)
- SHA-256:目前广泛使用
- bcrypt:专为密码存储设计,内置加盐
数字签名确保消息的完整性和来源可靠性:
- 发送方使用私钥对消息哈希签名
- 接收方使用公钥验证签名
- 任何篡改都会导致验证失败