Pyhton常用的加密和hash算法

非常好,这份总结已经清晰地介绍了哈希函数在 Web 开发中的应用场景。为了进一步完善内容,我们可以对文中提到的**“加密算法”补充它们的基本特性**,包括:

  • 哈希 vs 加密的区别
  • 哈希算法特性
  • 对称加密算法
  • 非对称加密算法
  • HMAC 的类型和原理


🔐 一、哈希算法 vs 加密算法(概念区别)

类型定义是否可逆常用算法
哈希(Hash)将任意长度输入转换为固定长度输出❌ 不可逆MD5, SHA-256, bcrypt
加密(Encryption)将明文变为密文,需要密钥解密还原✅ 可逆AES, RSA


🔁 二、哈希算法的特性(密码/签名专用)

特性说明
单向性(不可逆)输入无法从输出中还原
雪崩效应输入稍有不同,输出完全不同
抗碰撞性不同输入不应生成相同哈希
确定性相同输入必然产生相同输出
快速计算计算速度快(除少数如 bcrypt 故意变慢)


✅ 三、密码存储常用哈希算法(详解)

算法类型加盐是否慢速是否推荐说明
MD5 / SHA1哈希❌ 不推荐太快,容易被暴力破解
bcrypt哈希(专为密码)✅ 自动加盐✅ 慢✅ 推荐广泛支持,Django 默认
PBKDF2哈希(键导出函数)✅ 慢✅ 推荐Django 内置支持
argon2哈希(现代方案)✅ 慢✅ 强烈推荐被认为是最安全的密码哈希方案


🔐 四、HMAC(消息认证码)

项目说明
类型哈希+密钥的组合,属于对称认证机制
是否可逆❌ 不可逆
用途API 签名、Webhook 认证、防篡改
算法示例HMAC-SHA256HMAC-SHA1
安全性基于哈希算法安全性,推荐用 SHA-256 或更高
hmac.new(secret_key, message, hashlib.sha256).hexdigest()


🔑 五、对称加密算法(Symmetric Encryption)

算法简介用途特点
AES(高级加密标准)现代对称加密标准数据传输、存储加密快速、安全,常用于 HTTPS、JWT 加密等
DES / 3DES旧标准,已弃用-安全性不够
  • 特征: 加密/解密使用同一个密钥 速度快,适合加密大量数据 必须保护密钥(泄漏则安全性丧失)


🔐 六、非对称加密算法(Asymmetric Encryption)

算法简介用途特点
RSA最常用的非对称加密算法SSL/TLS、数字签名公钥加密,私钥解密
ECC(椭圆曲线加密)更小密钥,更高效率JWT、移动设备加密相比 RSA 更轻量
  • 特征: 公钥加密,私钥解密 私钥签名,公钥验签 通常用于身份认证、数据交换密钥协商(如 HTTPS)


🔍 七、快速汇总对照表

场景推荐算法类型可逆特性说明
密码存储bcrypt, argon2哈希❌ 不可逆安全、加盐、防暴力破解
API 签名HMAC-SHA256哈希认证码❌ 不可逆对称密钥认证、防篡改
文件加密AES对称加密✅ 可逆加密快,但密钥要保护好
用户身份认证RSA非对称加密✅ 可逆公钥加密 / 私钥签名
静态资源版本控制MD5哈希❌ 不可逆快速唯一标识,非安全
数据完整性校验SHA-256哈希❌ 不可逆文件一致性校验
去重判断MurmurHash哈希❌ 不可逆快速,适用于布隆过滤器


如需我补充每种算法的使用示例或代码片段(如 AES 加密/解密、JWT 签名、argon2 密码存储),可以告诉我,我可以帮你补齐代码部分。

文章标签:

评论(0)