哈希算法原理和用途说明详解
在数据库中用于索引或检索项目的同一类数学技术可用于密码学中,以对消息和数据进行加密。这些哈希算法采用多种形式,并且出于加密目的,它们涵盖了一系列优缺点,下面就具体介绍哈希算法原理和用途说明。
1.什么是哈希?
顾名思义,散列是将信息切碎和混合的过程。在典型的数据操作中,字符串将转换为固定长度的较短字符串,该字符串表示原始字符串。此长度减小的值也称为密钥。
对于数据库索引和检索,通常是基于较短的哈希键而不是原始值来搜索单个记录,从而更加快捷,容易。如果数据集足够小,则可以为每个记录生成唯一的哈希键。并且出于加密目的,对一长串字符(例如消息或数据集)进行散列会产生一个缩短的密钥,该密钥可能与指纹一样唯一。
2.散列值
在散列操作中,根据应用于数据集或消息中所有字符串的特定公式,将每个字符集减少到其对应的散列值。将各种字符串转换成固定长度的精简键具有减少搜索特定数据库条目或存储和传输加密消息的加密形式时的复杂性的优点。
搜索任何条目都始于其哈希值的计算,然后筛选数据以找到匹配项。对于加密,散列用于对数字签名进行加密和解密,以验证不同消息的发送者和接收者。这里的哈希值(也称为消息摘要)是数字签名的简化形式。
3.散列函数
哈希函数或哈希算法是用于从基本输入数字和字符串计算哈希值的数学过程。它们可能非常复杂,并且会产生几乎无法从原始输入数据派生的哈希值,而无需知道所应用的哈希函数。由于这个原因,可以从这样的算法派生用于公共密钥加密的密钥。
哈希函数用于为原始数据字符串值或键编制索引,并在随后的每个需要检索与特定哈希值或键关联的信息的情况下使用。从这个意义上讲,这些函数是单向操作:它们不需要从派生的哈希值中进行反向工程–并且哈希函数旨在抵抗这种分析。
4.碰撞
设计良好的哈希算法不应从两组不同的输入中得出相同的哈希值,这种现象称为冲突。在数据处理中,通常使用散列函数通过搜索其散列值或键来确定特定数据串在数组中的位置。如果两个或更多个不同的键要散列到数据数组中的同一位置,则会导致混乱(并可能导致系统崩溃)。因此,必须设计哈希算法,以最大程度地减少冲突风险。
5.除法
这是一种相对基本的哈希算法,其中估计数据数组中的项目总数。然后将此图划分为每个数据字符串值,以得到商(忽略)和余数-作为哈希值。显然,具有大量数字,会出现许多重复的余数,从而导致多次碰撞的可能性。因此,针对此类数据集的搜索算法必须考虑到这一缺陷。
6.折叠方式
对于数字字符串,折叠方法采用原始数字并将其分成几部分,将它们加在一起,然后使用预定数量的最后数字作为键或哈希值。
7.基数变换法
在这里,数字数据集的数字底数或基数(以10为底,以2为底等)被更改为给出不同的数字序列。例如,二进制(基数2)数据集可以转换为十进制(基数10)或十六进制(基数16),形式更短。可以通过丢弃结果中的高位数字来强加长度一致的哈希值。
8.数字重排方法
此方法使用简单替换,其中原始数据字符串的预定部分被反转,并用作该字符串的哈希值。
9.加密中的应用
如前所述,哈希算法用于加扰数字签名。这些首先使用算法进行转换以提供消息摘要,然后使用单独的传输将其与关联的哈希值或密钥一起发送给编码传输的接收者。通过使用与发送方相同的哈希算法,接收方将从未更改的数字签名中获取一个消息摘要,该消息可以与伴随传输的消息摘要进行比较。如果它们匹配,则传输是安全的。
10.Rivest消息摘要算法
RonaldRivest(RSA加密中的R)开发了几种加密哈希算法。1989年,他创建了MD2消息摘要算法,该算法从任意长度的消息中产生128位哈希值。首先填充消息,以便它们的字节长度形成16的倍数。将16字节的校验和添加到已填充的消息中,并根据结果计算出哈希值。
MD2针对8位计算机进行了优化,并在RFC1319中进行了指定。该算法设计用于带有数字签名的部署,用于在必须使用公共密钥对私钥或私钥进行签名之前必须将大文件安全地压缩的交易中。RSA等加密系统。首次出现时,有人建议使用MD2几乎不可能生成具有相同消息摘要的两条消息,或者仅从其摘要中重建原始消息是不可能的。但是黑客技术迅速发展,并且需要新的算法。
随后是MD4(由Rivest在1990年开发)和MD5(1991)。MD5是其前身的改进,其算法需要四部分计算才能生成128位的消息摘要,该算法针对在32位计算机系统上使用进行了优化。研究人员于2008年12月发现了MD5哈希算法的一些主要缺陷,同时成功攻击了X.509数字证书中基于MD5的签名。在模拟攻击中,攻击者能够更改数字证书的多个方面,包括其有效期限,序列号和主题行,而无需更改其明显的哈希值。这表明需要更强大的加密算法。
11.安全哈希算法(SHA)
该安全散列算法(SHA)是由美国国家安全局(NSA)设计的算法。它的第一个修订版(SHA-1)实际上是由NIST于1994年发布的,现在已成为美国联邦信息处理标准。与MD类的哈希函数不同,SHA-1产生160位(或20字节)的消息摘要,它比MD5更能抵抗暴力攻击。从那时起,该标准已发展到SHA-2,该标准已获得认可并与许多开源平台和安全传输方法集成。除带有数字签名的应用程序外,与密码结合使用时,SHA-1和SHA-2的HMAC版本扩展了功能范围。