密码学入门:哈希、加密、签名一次搞懂

2026-06-05 开发者 1 次浏览
密码学,哈希算法,AES加密,HMAC签名,数据安全

加密用错了,比不加密还危险

密码学是数据安全的数学基础,从密码存储到API签名验证,从传输加密到文件校验,到处都在用。但密码学概念多、容易混淆,用错了反而引入安全漏洞。我从开发者视角,梳理哈希、加密和签名三大核心概念。

哈希算法:不可逆的数据指纹

哈希算法将任意长度的输入映射为固定长度的输出,具有不可逆性和抗碰撞性。相同输入始终产生相同输出,不同输入几乎不可能产生相同输出。

MD5:输出128位(32位十六进制),已被证明存在碰撞漏洞,不推荐用于安全场景,但仍可用于文件校验和去重。MD5哈希工具 可快速计算文本和文件的MD5值。

SHA系列:SHA-1(160位)已不安全;SHA-256(256位)是目前最常用的安全哈希算法;SHA-512(512位)提供更高安全等级。SHA加密工具 支持SHA-1/256/512等多种变体。

哈希的典型应用:

  • 密码存储:存储哈希值而非明文密码,加盐(salt)防止彩虹表攻击
  • 数据完整性校验:对比哈希值验证数据是否被篡改
  • 文件去重:相同文件具有相同哈希值
  • 区块链:工作量证明和区块链接

文件哈希校验工具 可计算文件的MD5/SHA值,用于验证下载文件的完整性和一致性。

对称加密:同一密钥加解密

对称加密使用同一密钥进行加密和解密,速度快、效率高,适合大量数据加密。

AES:高级加密标准,支持128/192/256位密钥,是目前最安全的对称加密算法之一,广泛用于TLS、磁盘加密等场景。AES加密工具 支持AES-128/192/256加密解密,支持ECB和CBC模式。

DES/3DES:DES密钥仅56位已不安全,3DES使用三次DES加密提升安全性但效率较低。DES加密工具 可用于兼容遗留系统。

AES加密模式选择:

  • ECB模式:相同明文块产生相同密文块,不适合加密有规律的数据
  • CBC模式:每个明文块与前一个密文块异或后再加密,更安全
  • GCM模式:提供加密和认证双重保障,推荐用于网络通信

HMAC签名:消息认证码

HMAC(Hash-based Message Authentication Code)使用密钥和哈希算法生成消息认证码,同时验证消息的完整性和真实性。

HMAC计算过程:HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m)),其中K'是填充后的密钥,ipad和opad是固定的填充常量。

HMAC典型应用:

  • API签名验证:AWS、阿里云等云服务使用HMAC-SHA256签名API请求
  • JWT签名:HS256算法使用HMAC-SHA256签名令牌
  • 消息完整性:确保消息在传输过程中未被篡改

HMAC生成器 支持HMAC-SHA256/SHA512等算法,可快速生成和验证HMAC签名。

密码学使用注意事项

  • 永远不要自己实现加密算法,使用成熟的标准库
  • 密码存储必须加盐(salt),推荐使用bcrypt/Argon2
  • 对称加密优先选择AES-GCM模式
  • 密钥管理比算法选择更重要,密钥泄露等于没有加密
  • 不要用MD5/SHA1做安全校验,使用SHA-256及以上
  • HTTPS是传输加密的基础,不要在HTTP上传输敏感数据
  • 初始化向量(IV)必须随机且不可预测

所有密码学工具均采用本地处理方式,哈希计算、加密解密、签名生成等操作在浏览器端完成,你的明文数据和密钥不会上传到服务器,这是使用在线密码学工具最重要的安全保障。

总结

密码学是数据安全的基石。哈希算法(MD5SHA)用于数据指纹和完整性校验,对称加密(AESDES)用于数据保密,HMAC签名(HMAC生成器)用于消息认证,文件校验(文件哈希校验)用于完整性验证。理解这些概念并正确使用对应工具,是构建安全应用的第一步。