哈希函数:将哈希表中元素的关键键值映射为元素存储位置的函数。哈希函数是哈希表中重要的部分。一般来说,哈希函数会满足以下几个条件:系统开发 (雯雯:153薇233O电443O)
哈希函数应该易于计算,并且尽量使计算出来的索引值均匀分布,这能减少哈希冲突
哈希函数计算得到的哈希值是一个固定长度的输出值
如果Hash(key1)不等于Hash(key2),那么key1、key2一定不相等
如果Hash(key1)等于Hash(key2),那么key1、key2可能相等,也可能不相等(会发生哈希碰撞)
在哈希表的实际应用中,关键字的类型除了数字类型,还有可能是字符串类型、浮点数类型、大整数类型,甚至还有可能是几种类型的组合。一般会将各种类型的关键字先转换为整数类型,再通过哈希函数,将其映射到哈希表中。而关于整数类型的关键字,通常用到的哈希函数方法有:直接定址法、除留余数法、平方取中法、基数转换法、数字分析法、折叠法、随机数法、乘积法、点积法等。
各种哈希算法
使用单向Hash函数的目的是提供消息指纹,如果不同的消息可以生成相同的哈希值(称为发生了碰撞),那么攻击者就能根据揭示出来的规律攻破这个机制。
高强度的哈希函数应当为两条或多条不同的消息生成不同的哈希值。
如果一个哈希算法采取了措施确保两条或多条不同的消息不会生成相同的哈希值,就称其为免碰撞(针对哈希算法的攻击基本上是试图找出碰撞)。
高强度的哈希函数应当有以下特征:
应当对整条消息计算哈希值;
哈希函数应当是单向函数,避免哈希值泄露消息;
给定一条消息及其哈希值,要找出另一条具有相同哈希值的消息应该是不可能的;
哈希函数应当能够抵御生日攻击(碰撞攻击)。
MAC就是消息验证码(Message Authentication Code)。是一种通过将密钥应用到消息上确保消息内容真实性的身份验证方案。
使用哈希算法是有很多优点的,就比如可以提高数据的查询效率,可以提高储存空间的利用率,哈希算法很难找到逆向规律,也可以做数字前门来保障数据传递的性。现在区块链技术已经逐渐成熟,运用到哈希竞猜这款游戏中后,捍卫我们每个人应享有的公平以及公正的权利,哈希游戏中的哈希值依托着去中心化的区块链网络随机生成,任何人不可逆,不可篡改,随时随地可以在区块链上去查询,才真正做到了平台该有的样子。