hash函数在信息安全哈希娱乐领域的应用研究
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏
【摘要】随着信息安全越来越受到重视,以及计算机技术和网络技术的不断创新和发展,越来越多的应用占据了我们的生活。同时信息安全问题也就成为了个人、企业、社会乃至国家一同关注的焦点问题。而hash函数作为加密算法和密码学中的重要函数。本论文将介绍了hash函数在信息安全领域的应用研究。从hash函数的基本概念、特性、常用的基本函数和其分类到它在信息安全领域中加密算法的应用。本详细地说明说明MD5和SHA-256这两种哈希算法的运算过程和相关步骤,也将重点介绍以MD5的哈希函数作为参考和SHA系列的哈希函数不同系列进行分析比较,分析他们的异同点。
众所周知,随着信息技术的发展和成熟,科学技术的飞速发展,互联网已经深入到人们的生活中成为他们工作的一部分。大数据、物联网、云计算、移动互联网、人工业智能等新技术的迅猛发展,标志着人类正式步入信息化、大数据时代。信息爆炸所带来的海量数据充斥在我们的日常生活之中,其中必然包含一些关乎个人隐私和敏感信息的重要信息或者是文件。然而在这些信息的使用和传递过程中,也将面临着信息被泄漏和信息被窃取等一系列信息安全问题。为了解决这些信息安全问题,哈希函数应运而生。首先是MD2、MD4、MD5的先后问世,随后就是SHA家族的五个算法,SHA-1、SHA-224、SHA-256、SHA-384SHA-512算法先后由美国国家标准技术研究所(NIST)和美国安全局(NSA)设计并公布,由此可见哈希函数的要要性。
哈希函数一般应用于产生消息摘要、指纹验证、数字签名、加密验证、数据完整性验证等领域。哈希函数又被称为单向散列函数,也称为单向Hash函数和杂凑函数。它的作用是把任意长度的输入通过散列算法转换成固定长度的输出,该输出就是散列值。
例如,Hash函数在各种文档中的加密技术的使用。随着互联网数据时代和文献资源的快速发展,各类文献种类杂多,因为涉及个人隐私或其他原因,相当多的文件通过加密技术被“锁定”了起来。另一方面在对互联网上的各种形形信息进行监控,过滤不良信息和电子取证,人们常用的方式依靠口令验证机制的加密信息系统的攻击和加密信息的还原。以word、PDF、WinZip等三个典型文档为例,给出了这三个文档在加密过程中使用的加密算法包括MD5、SHA-1、DES、AES和SHA-512。
本文通过介绍hash函数的基本概念、特性、常用的基本函数和其分类以及它在信息安全领域中加密算法的应用。重点将介绍MD5的哈希函数和SHA系列的哈希函数并对两种不同系列地进行分析比较,分析他们的异同点。
随着计算机和互联网在各行各业的广泛应用,在信息的高速交互传输过程中,信息安全问题越来越受到人们的重视。基于hash函数及其各种算法的创建和应用可以为信息添加一个安全锁。对文件校对、加密存储、数字签名、
KPI构建等信息方面也有充分的安全保障,能有效防止攻击,保证真实信息不被修改或泄露。Hash算法长期以来被广泛应用于计算机科学领域,并为计算机网络安全做出了突出贡献。伴随着密码学的不断发展和进步,单向的散列函数也逐渐发展成信息安全领域的密不可分的重要的结构模块。随着哈希函数在各个领域的应用的深入和进步,诸多的应用开发,信息安全的检验都离不开hash函数。研究哈希函数的意义也变得也越来越重要。所以,研究哈希函数是非常必要且有重大意义的。
随着计算机的发展和通讯技术的进步,在两者的共同推动下,信息要素已然成为促进社会发展的决定性力量之一,信息不仅仅关系到人的成长和生活,也和单位事业的发展有着重大的关系,甚至关系到一个国家的生存和经济发展,当今社会毫无疑问是进入了信息化的时代。与此同时,信息安全问题的重要性也越来越凸显。从最高层次来说,信息安全时刻关系到国家的安全。对组织机构来说,信息安全则关系到机构的正常运作和持续发展,重要性不言而喻。就公民个人而言,信息安全是保证个人隐私和财产的必然诉求。所以无论是个人、组织还是国家,对于关键信息资产的安全的保护都相当的重视。然而基于哈希函数的各种算法的建立和应用对我们保护信息安全有很大的帮助。因此,hash函数在信息安全领域的应用具有重要意义。
Hash函数在信息安全领域有诸多的应用。例如数字签名、文件校对、签署协议等等。它所具有的安全特性是其他函数所不具备的,这使得哈希函数在信息安全的领域中可以发挥巨大的作用。所以我们有必要去研究它在信息安全领域中的应用的重大意义。
Hash函数也称杂凑函数或散列函数,是把任意长度的输入通过散列算法转换成固定长度的输出,该输出就是散列值,这种转换是一种压缩映射。简单来说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数【1】
它具有数据压缩功能。可以将任意长度的输入数据转化成一个固定长度的输出【1】。
它具有单向性。Hash函数是一种单向密码体制,它是一个从明文到密文的不可逆映射,只有加密过程,但是不能解密。即它的计算过程是单向不可逆的。
它具有抗碰撞性。所谓碰撞性是指两条不同的消息M和M',如果他们的散列值相同,即H(M)=H(M'),则发生碰撞。如果H(M)≠H(M')即使M和M'的差别很小,即使只有一个比特的差别,但是它们的散列值可能完全不同。这就是强抗碰撞性。若给定消息M和它的散列值H(M),不可能找到另一个带有不同消息M'的M,使H(M)等于H
如果两个哈希值不同,那么这两个哈希值的原始输入也不同。这个性质是哈希函数具有确定性的结果。但是另一方面,哈希函数的输入和输出不是一一对应的;如果两个散列相同,两个输入值可能相同,但不能绝对确定它们肯定相等(哈希碰撞可能发生)。输入一些数据来计算哈希值,然后部分更改输入值,具有强混淆属性的哈希函数将产生完全不同的哈希值【2】。
Hash函数可以使对一个数据序列的访问过程变得更加迅速且有效,利用Hash函数,数据元素可以被我们更快速的定位。我们常用的构造方法有:
直接寻址法。我们获取关键字或者是关键字的某个线性函数值作为散列地址。这类的函数是一一对应的函数,是不会发生冲突的情况的,但是我们要保证地址集合和我们定义的关键字集合大小相同。因此这种方法在处理数据量较小的情况时,会相对简单有效。但是直接寻址法需要知道关键字的分布,它的适用性就大打折扣。这种方法构造出来的哈希函数的一般形式如下:
数字分析法。我们获取关键字中取值较为分散的若干位数字位组成散列地址。这种方法的优点是它适用于所有关键字已知的情况,可以处理关键字的位数较多的情况,经过我们分析数字的分布情况,将位数较多的关键字的取值范围转化成较小的关键字取值范围。
k6,k7,k8利用数字分析法,不难分析出每一个关键字中从左到右第一位,第二位,第三位和第六位的取值相对集中,不宜选取作为散列地址,剩余的第四位,第五位,第七位和第八位的取值是相对分散的,可选取其中的若干位组成散列地址。设我们选取第七位和第八位组成散列地址,则这组关键字的散列地址分别为:91,64,17,23,5,27,51,19。
平方取中法。我们先获取关键字平方,再依据实际的需求选取平方值的中间的若干位来作为散列地址。我们知道一个数值平方后的中间几位的数和原来数值的每一位都有关系,由此我们可以得到,用平方取中法得到的散列地址同关键字的每一位都有关,这样得到的散列地址也比较均匀。
若设哈希表长为1000,取关键字的平方值的中间三位,可以得到散列地址如下表:表3-1平方取中法取散列地址
分段叠加法。我们先将关键字分成位数长度相同的几段,其中最后一段的位数可以不相同,每一段的位数取决于散列地址的位数,然后将均分的几段叠加求和得出散列地址。这种方法应用于关键字位数较多且不知道关键字分布的情况。分段叠加法又可以被分成边界叠加法和位移叠加法两种,移位叠加是将每段低位对齐进行相加,边界叠加是将奇数段正序偶数逆序进行相加。
若现有关键字key散列地址为3位,则利用分段叠加法我们可以得到该关键字的散列地址。具体如下表:
除留余数法。我们先假设散列表长为m,然后获取关键字被某个不大于散列表表长m的数p除后所得的余数为
利用除留余数法不仅仅能对关键字直接进行取模,也能够在折叠、平方取中等运算之后取模。对于除留余数法来说,p值的选取很重要,一般情况下我们选取不大于表长m但最接近表长m的素数,若p选的不好,容易产生碰撞。
随机乘数法。我们先假设散列表长为m,然后获取一个随机实数A(0A1),用A乘以key(关键字),取乘积的的小数部分,最后用表长m乘以小数部分进行取整,得到的整数就是散列地址。这类哈希函数的一般形式如下:
利用随机乘数法对下列的关键字集合选取散列地址,取随机数A=0表长m=100,可以得出下表:表3-4随机乘数法选取散列地址
(1).加法hash:我们说的加法hash就是将一个个的输出元素加起来组成最后的结果。
(2).位运算hash:这中类型hash函数是通过利用各种位运算(常见的是移位和异或)来充分地混合输入元素。
(4).查表hash:查表Hash最出名的例子就是CRC系列算法。尽管CRC系列算法本身并非查表,然而,查表是它的一种最快的实现方式。以下是CRC32的实现:
(5).混合hash:混合Hash算法则是利用了以上各种方式。各种常见的Hash算法,比如MD5、Tiger都属于这个范围。
加密函数4.1加密算法的分类加密算法有许多种,按照是否利用密钥和利用密钥的方法方式可将加密算法划分成以下三种:
第一种加密算法是私密密钥算法,是通信各方都使用相同的一个密钥对信息数据进行加密和解密,所以它又被我们称为对称加密算法。对称的加密算法具有加密速度快、保密度高、密钥相对较短的优点,但是它的缺点也很明显,密钥的保密性十分重要,通讯双方必须使用一样的密钥并且它的开发非常复杂,花费的代价高。比较常见的对称加密算法有DES、3DES和AES等等。
第二种加密算法是公开密钥算法,是通信各方都拥有一个公开的密钥和一个私有的密钥,所以它又被我们称为非对称加密算法。非对称密钥算法具有密钥的分发和保存比较简单的优点,但是缺点就是加解密速度较慢。常用的非对称密钥算法有DSA、RSA和ECC等等。
第三种加密算法就是哈希函数或散列函数。与前两种加密算法不同,哈希函数一般情况下不需要使用密钥。它是一种单向的算法,使用哈希算法可以对任意长度的信息通过一系列的变换输出一个唯一的特定长度的哈希值,但是我们无法通过这个哈希值来得出原信息。所以哈希算法在密码存储和数据完整性校验等领域有广泛的应用。比较常见的哈希算法包括MD5、SHA-1、SHA-256等等。
md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥使用前被压缩成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。与此同时,它是一种不可逆变换,即我们无法将一个MD5的哈希值变换回原来的消息。
MD5是输入不定长度信息,输出固定长度128比特的算法。它以512比特当作一个组来处理输入的消息,经过一系列算法处理,生成四个32比特的数据分组,将这四个分组最后联合起来成为一个128比特的散列值,即生成一个128比特的哈希值。基本的处理方式为,求余、取余、调整长度、与链接变量进行循环运算,最后得出相关的结果。
假定现在将一个任意长度的消息当作输入,利用MD5算法计算该消息的哈希值,那么对消息的处理有以下几个步骤:第一步:对原始消息进行补充编码。
因为在MD5算法中,是以512比特为一个组进行处理,而我们输入的待处理的原始消息的比特长度不一定是512比特的整数倍,因此我们在计算待处理消息前需要对其进行补充编码,使其位长对512求余的结果等于448。因此,消息的位长(BitsLength)将被扩展至,N为一个非负整数,N可以是零。填充的长度是1到512比特,在任何情况下都需要对消息进行填充,即使消息的长度正好为除512后余448,这个时候就需要填充512比特【4】。
填充的内容是在待处理消息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对消息的填充。简单来说就是,填充的第一个比特为1,后面补上若干个比特的0【5】。
这一步中,我们利用64比特的二进制来表达原始消息的长度,然后将这64比特的二进制数添加到第一步中填充的数据后面【2】。经过这两步的处理,现在的消息的位长=,即消息的比特长度恰好是512的整数倍。这样做的目的是为满足后面处理中对消息长度的要求。
通过前两步的处理之后,待处理的消息长度是512比特的整数倍。将待处理的消息划分成L个512比特长度的数据块,将这些数据块分别标记为Y0,Y1,…,
512比特分组的MD5运算输出和下一个分组运算的输入,链接变量的初始值是进行第一个分组运算时的128比特的输入
【4】。IV和CV都是由四个四字节的字A,B,C,D来表示的,他们的初始值IV的十六进制值如表4-1所示,其中低位字节放在前面【5】表4-1链接变量初始值(十六进制)
这是MD5算法的核心,一共有四轮的运算。MD5运算由类似的64次循环构成,分成4组16次.它的逻辑图如图4-2所示【5】
从图4-2可以看出四轮处理用到了相似的结构进行数据的处理,但是每一轮的处理中运用的逻辑函数不相同,从第一轮开始,依次使用了四个非线性函数,记作F函数、G函数、H函数和I函数。具体函数如下:
在这四个函数中,代表的意思是与,代表的意思是或,代表的意思是非,∧代表的意思是异,它们按照对应的比特位进行运算【2】。
首先我们声明四个中间变量a,b,c,d,赋值:a=A,b=B,c=C,d=D.然后定义成下面四个计算函数:
其中M[j]代表消息的第j个子分组,因为512比特的数据块会被保存在32位的数组M中,所以数组M中会有16个元素。每一轮运算包括16步,每一步的输入分别是数组M中的某一个子分组M[j]和四个32比特的链接变量ABCD[2]。第一轮运算的时候,处理的512比特数据块是按照存在数组M中的16个字的原始顺序,(即M0—M15)来当作输入进行运算,则第二轮、第三轮、第四轮按照以下的计算公式的顺序数输入M[j]来运算【5】:第一轮中的第i步:
2024年数字模拟混合输出仪表通讯模板资金申请报告代可行性研究报告.docx
2023年陕西省中考英语试卷真题(含官方标准答案) +2022年试卷及答案.docx
(高清版)DB11 447-2015 炼油与石油化学工业大气污染物排放标准.pdf
国家开放大学旅游学院《旅游工作者素质修养》形考任务4(全部章节,权重25%)-null分.doc
JTG 3370.1-2018 公路隧道设计规范 第一册 土建工程.docx
原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者