zoukankan      html  css  js  c++  java
  • 加密第二节_散列算法

    加密第二节_散列算法

    本节内容

    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的预共享密钥。

  • 相关阅读:
    Java基础学习笔记十 Java基础语法之final、static、匿名对象、内部类
    入门设计模式之桥梁模式
    入门设计模式之外观模式
    入门设计模式之策略
    入门设计模式之观察者
    入门设计模式之模板
    入门设计模式之原型
    入门设计模式之工厂
    几分钟几张图教你学会如何使用UML
    入门设计模式之建造者
  • 原文地址:https://www.cnblogs.com/huxianglin/p/6386517.html
Copyright © 2011-2022 走看看