加密第二节_散列算法
本节内容
- 散列函数(HASH函数)
- HMAC技术(哈希信息认证代码技术)
散列函数(HASH函数)
主流的散列算法有MD5和SHA-1,其主要任务是验证数据的完整性,通过散列函数计算得到的结果叫做散列值,该散列值通常被称为数据的指纹
散列算法特点
- 固定大小:散列函数可以接收任意大小数据,并输出固定大小散列值,MD5得到的散列值大小是128bit,SHA-1得到的散列值大小是160bit
- 雪崩效应:原始数据只要修改,计算得到的散列值将会发生巨大变化
- 单向:只可能从原始数据计算得到散列值,不可能从散列值恢复数据
- 冲突避免:几乎不能找到另外一个数据和当前数据计算的散列值相同,因此散列函数能确保数据的唯一性
散列算法用途:
- 认证;
- 使用数字签名保障数据与文档的完整性;
- IPSec和路由协议的验证
HMAC技术(哈希信息认证代码技术)
- 增加一个KEY一同做HASH;
- 需要双方预先知道这个KEY;
- 在保障完整性的基础上实现了源认证;
- 消除了HASH易受中间人攻击的问题;基于存在的HASH函数;
举例:
OSPF的认证,路由器1使用明文和KEY一同做散列,得到散列值,再将该散列值和明文一同发给路由器2,路由器2将明文和相同的KEY做散列运算,得到散列值,进行对比,实现源认证和信息的完整性。
MD5:
- 广泛使用的HASH算法;
- 单向;
- 冲突避免;
- 128bit固定输出;
- 不建议在新的运用中使用;
- SHA-1和SHA-2提供了更高的安全性
HASH/HMAC使用指南:
避免使用MD5,使用更加安全的SHA-1和SHA-2,从性能考虑可以使用MD5,保护用于HMAC的预共享密钥。