哈希值


哈希值

文章插图
哈希值【哈希值】哈希值,又称:散列函式(或散列算法,又称哈希函式,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法 。散列函式把讯息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来 。该函式将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹 。散列值通常用一个短的随机字母和数字组成的字元串来代表 。好的散列函式在输入域中很少出现散列冲突 。在散列表和数据处理中,不抑制冲突来区别数据,会使得资料库记录更难找到 。
基本介绍中文名:哈希值
外文名:Hash Function
随机数生成:许多加密操作不可分割的组成部分
以便:使生成的密钥很难再现
示例:哈希函式以确保数据完整性
别称:散列函式,散列算法,哈希函式
随机生成随机数生成是许多加密操作不可分割的组成部分 。例如,加密密钥需要儘可能地随机,以便使生成的密钥很难再现 。加密随机数生成器必须生成无法以计算方法推算出(低于 p < .05 的机率)的输出;即,任何推算下一个输出位的方法不得比随机猜测具有更高的成功机率 。.NET Framework中的类使用随机数生成器生成加密密钥 。RNGCrypto Service Provider是随机数生成器算法的实现 。散列函式的性质所有散列函式都有如下一个基本特性:如果两个散列值是不相同的(根据同一函式),那幺这两个散列值的原始输入也是不相同的 。这个特性是散列函式具有确定性的结果,具有这种性质的散列函式称为单向散列函式 。但另一方面,散列函式的输入和输出不是唯一对应关係的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“散列碰撞(collision)”,这通常是两个不同长度的输入值,刻意计算出相同的输出值 。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函式会产生一个完全不同的散列值 。典型的散列函式都有非常大的定义域,比如SHA-2最高接受(2-1)/8长度的位元组字元串 。同时散列函式一定有着有限的值域,比如固定长度的比特串 。在某些情况下,散列函式可以设计成具有相同大小的定义域和值域间的单射 。散列函式必须具有不可逆性 。散列函式的套用由于散列函式的套用的多样性,它们经常是专为某一套用而设计的 。例如,加密散列函式假设存在一个要找到具有相同散列值的原始输入的敌人 。一个设计优秀的加密散列函式是一个“单向”操作:对于给定的散列值,没有实用的方法可以计算出一个原始输入,也就是说很难伪造 。为加密散列为目的设计的函式,如SHA-2,被广泛的用作检验散列函式 。这样软体下载的时候,就会对照验证代码之后才下载正确的档案部分 。此代码有可能因为环境因素的变化,如机器配置或者IP位址的改变而有变动 。以保证源档案的安全性 。错误监测和修複函数主要用于辨别数据被随机的过程所扰乱的事例 。当散列函式被用于校验和的时候,可以用相对较短(但不能短于某个安全参数, 通常不能短于160位)的散列值来验证任意长度的数据是否被更改过 。加密主条目:加密散列函式一个典型的加密单向函式是“非对称”的,并且由一个高效的散列函式构成;一个典型的加密暗门函式是“对称”的,并且由一个高效的随机函式构成 。确保传递真实的信息讯息或数据的接受者确认讯息是否被篡改的性质叫数据的真实性,也称为完整性 。发信人通过将原讯息和散列值一起传送,可以保证真实性 。散列表主条目:散列表散列表是散列函式的一个主要套用,使用散列表能够快速的按照