加密第二节_散列算法

加密第二节_散列算法

本节内容

  1. 散列函数(HASH函数)
  2. HMAC技术(哈希信息认证代码技术)

散列函数(HASH函数)

主流的散列算法有MD5和SHA-1,其主要任务是验证数据的完整性,通过散列函数计算得到的结果叫做散列值,该散列值通常被称为数据的指纹

散列算法特点

  1. 固定大小:散列函数可以接收任意大小数据,并输出固定大小散列值,MD5得到的散列值大小是128bit,SHA-1得到的散列值大小是160bit
  2. 雪崩效应:原始数据只要修改,计算得到的散列值将会发生巨大变化
  3. 单向:只可能从原始数据计算得到散列值,不可能从散列值恢复数据
  4. 冲突避免:几乎不能找到另外一个数据和当前数据计算的散列值相同,因此散列函数能确保数据的唯一性

散列算法用途:

  • 认证;
  • 使用数字签名保障数据与文档的完整性;
  • 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的预共享密钥。

posted @ 2017-02-10 15:22  随风飘雪012  阅读(399)  评论(0编辑  收藏  举报
返回顶部 $(function(){ $('#returnTop').click(function () { $('html,body').animate({ scrollTop: '0px' }, 800); returnfalse; }); });