HASH函数的特点及其应用

原创 2008年10月03日 17:30:00
    HASH函数必须具备两个基本特征:单向性 和 碰撞约束。单向性是指其的操作方向的不可逆性,在HASH函数中是指 只能从输入推导出输出,而不能从输出计算出输入;碰撞约束是指 不能找到一个输入使其输出结果等于一个已知的输出结果 或者 不能同时找到两个不同的输入使其输出结果完全一致。一个函数只用同时严格的具备了这样的特性,我们才能认可这样的一个HASH。
    目前常用的HASH函数主要有两个系列,MD 和 SHA系列。MD系列主要包括 MD2,MD4,MD5,不幸的是这一系列的hash函数都已经被证实是不够安全的了,我国山东大学教授王小云就是因为在有限的时间内成功地破解了MD2和MD5算法而扬名海内外。SHA系列正是因此而生,其包含SHA1 和 SHA2(SHA224, SAH256, SHA384,SHA512)系列。其中224,256,384,512都是指其输出的位长度,而SHA1是160位长(注意我们应该避免使用SHA0,那是SHA的初始版本,后来经过调整,升级为SHA0,我们在使用的时候应该使用SHA1).
    经过长时间的测试和软硬件的不断提升,SHA1已经不再被当成是能经得住考验的选择了。目前大多数应用场景下,推荐使用SHA256以上的算法。在概率方面有生日悖论的存在,经此推导,每种HASH算法的实际位强度只有其结果强度的一般,即如果是SHA256,实际攻击强度只有2的128次方。
    对于HASH函数的使用,有很多误区,在此特列举其使用场景以及常见的使用误区。但是不论如何,我们都该记得HASH函数的特点:固定长度的输出,单向不可逆,碰撞约束。
    正确的应用场景:
    1,数据校验
    HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。
    2,单向性的运用
    利用HASH函数的这个特点,我们能够实现口令,密码等安全数据的安全存储。密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,顾而我们可以比较HASH结果。这一点相信在银行等系统中有所运用,否则我们真的要睡不着觉了:)
    3,碰撞约束以及有限固定摘要长度
    数字签名正是运用了这些特点来提高效率的。我们知道非对称加密算法速度较低,通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率。
    4,可以运用HASH到随机数的生成和密码,salt值等的衍生中
    因为HASH算法能够最大限度的保证其唯一性,故而可以运用到关键数据的衍生中(从一个随机的种子数产生,并且不暴露种子本身秘密)。
    常见的误区:
    1,误认为其是加密算法
    有很多人把HASH算法当成是加密算法,这是不准确的,其实我们知道加密总是相对于解密而言的,没有解密何谈加密呢,HASH的设计以无法解为目的的。
    2,不包含salt的口令HASH
    注意如果我们不附加一个随机的salt值,HASH口令是很容易被字典攻击入侵的。
    3,不注意中间人攻击
    注意HASH并不能保证网络的安全,要防止攻击者同时替换数据和HASH。正确运用中要结合加密,签名。

    没有永远的安全HASH,只有永远的HASH思想......

hash函数的简单介绍

HASH函数 应用Hash函数  作者:冲处宇宙 时间:2007.1.25 计算理论中,没有Hash函数的说法,只有单向函数的说法。...
  • youyiyang
  • youyiyang
  • 2015年09月17日 16:05
  • 3028

特征哈希(Feature Hashing)

特征哈希(Feature Hashing) Nov 20, 2014 在特征处理(Feature Processing)中我介绍了利用笛卡尔乘积的方法来构造组合特征。这种方法虽然简单,但麻...
  • wanglyPKU
  • wanglyPKU
  • 2016年07月08日 11:19
  • 4646

常见的hash函数 :-D 非常经典!!

常见的Hash算法 2011-04-08 22:31 1999人阅读 评论(6) 收藏 举报 简介哈希方法学哈希函数和素数位偏向各种形式的哈希常用的哈希函数各版本哈希代码下载 ...
  • mycomputerxiaomei
  • mycomputerxiaomei
  • 2012年06月07日 11:16
  • 63945

哈希表的使用和优点

哈希表的使用和优点
  • zhdd1234
  • zhdd1234
  • 2010年09月08日 15:29
  • 6023

哈希表(散列表)原理详解

哈希表(散列表)原理详解
  • duan19920101
  • duan19920101
  • 2016年06月03日 15:23
  • 55370

区块链基础:散列法(Hashing)

原文:https://medium.com/@ConsenSys/blockchain-underpinnings-hashing-7f4746cbd66b#.94m1n6n3b 作者:Joseph...
  • lucky_greenegg
  • lucky_greenegg
  • 2016年07月14日 16:40
  • 3119

hash算法的实际运用

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是...
  • u013445530
  • u013445530
  • 2014年12月17日 13:48
  • 2869

Hash结构详解

1、什么是Hash       Hash,即”散列“,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换也是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不...
  • cyongxue
  • cyongxue
  • 2014年02月20日 11:00
  • 8279

哈希函数的构造及注意事项

哈希表的主要作用其实就是处理数据的映射,把数据转换为更方便,更容易处理的数据。 而映射就是就是一个函数,称之为哈希函数。   通常构造哈希函数需要考虑以下要点: (1)哈希函数的耗时时间 (2)关键字...
  • zhouzhenhe2008
  • zhouzhenhe2008
  • 2017年08月01日 11:06
  • 115

到底什么是hash?它起什么作用?

从emule诞生到现在也已经有了两年左右时间了,随着emule的普及,喜欢他的人也越来越多,但是由于emule对技术相应有一个门槛,不像bt那么容易上手,所以很多朋友很长时间以来一直都有这样或那样的疑...
  • 21aspnet
  • 21aspnet
  • 2011年07月11日 02:05
  • 7540
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HASH函数的特点及其应用
举报原因:
原因补充:

(最多只允许输入30个字)