sha-1|Not Interested in investing哈希游戏玩法系统开发逻辑方案(代码)
文章图片
【sha-1|Not Interested in investing哈希游戏玩法系统开发逻辑方案(代码)】
哈希函数(Hash Function)也称为散列函数或杂凑函数 。 哈希函数是一个公开函数可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M)称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要(Message Digest) 。 它是一种单向密码体制即一个从明文到密文的不可逆映射只有加密过程没有解密过程 。 系统定制薇加owlishy
哈希是一种通过对数据进行压缩从而提高效率的一种解决方法 , 但由于哈希函数有限 , 数据增大等缘故 , 哈希冲突成为数据有效压缩的一个难题 。 本文主要介绍哈希冲突、解决方案 , 以及各种哈希冲突的解决策略上的优缺点 。
哈希是如何应用在区块链中的?
在区块链中 , 每个区块中都有前一个区块的哈希值 , 前一个区块叫做当前区块的父区块 。 由于每个区块都有前一个区块的哈希值 , 当修改当前区块的任意数据都会导致区块的哈希值发生变化 , 这会对前一个区块产生影响 , 因为其中含有前一个区块的地址 。
比如 , 当前有两个区块 , 一个是当前区块 , 一个是父区块 。 当前区块中有父区块的地址 , 如果需要修改当前区块的数据 , 就需要对父区块链进行修改 。 如果只有两个区块就比较好修改数据 , 但事实上区块链上有很多的区块 。
什么是哈希?
哈希是将任意长的输入编程加密的固定长度输出的过程 。 哈希并不等同于加密方法 , 因为无法解密哈希值来获取原始数据 。 事实上哈希是一种单项加密函数 。
有了哈希函数 , 就可以将互联网上的数据以固定长度字符串的形式来保存 。 其中一种方法就是SHA-256(安全哈希算法-256位) , SHA-256是SHA-1的后继者 , SHA-1的输出是160位的 。
哈希表概述
哈希表的哈希函数输入一个键 , 并向返回一个哈希表的索引 。 可能的键的集合很大 , 但是哈希函数值的集合只是表的大小 。
哈希函数的其他用途包括密码系统、消息摘要系统、数字签名系统 , 为了使这些应用程序按预期工作 , 冲突的概率必须非常低 , 因此需要一个具有非常大的可能值集合的散列函数 。
密码系统:给定用户密码 , 操作系统计算其散列 , 并将其与存储在文件中的该用户的散列进行比较 。 (不要让密码很容易被猜出散列到相同的值) 。
消息摘要系统:给定重要消息 , 计算其散列 , 并将其与消息本身分开发布 。 希望检查消息有效性的读者也可以使用相同的算法计算其散列 , 并与发布的散列进行比较 。 (不要希望伪造消息很容易 , 仍然得到相同的散列) 。
这些应用的流行哈希函数算法有:
md5:2^128个值(找一个冲突键 , 需要哈希大约2^64个值)
sha-1:2^160个值(找一个冲突键 , 需要大约2^80个值)
哈希冲突
来看一个简单的实例吧 , 假设采用hash函数:H(K)=K mod M , 插入这些值:217、701、19、30、145
H(K)=217%7=0 H(K)=701%7=1 H(K)=19%7=2 H(K)=30%7=2 H(K)=145%7=5
上面实例很明显19和30就发生冲突了 。 系统定制薇加owlishy
冲突解决技术可以分为两类:开散列方法(open hashing , 也称为拉链法 , separate chaining)和闭散列方法(closed hashing , 也称为开地址方法 , open addressing) 。 这两种方法的不同之处在于:开散列法把发生冲突的关键码存储在散列表主表之外 , 而闭散列法把发生冲突的关键码存储在表中另一个槽内 。
推荐阅读
- 主机掌机类游戏|Dota2-情比金坚?Boboka与Xxs合作场次达1455场,超越NOtail与Fly!
- |Dota2-刀生无悔?双冠王NOtail:我没什么后悔的
- 微软|我的世界:当看到微软687亿买下《魔兽世界》,Notch哭晕在厕所!
- 我的世界|我的世界:金苹果源于一个玩笑,Notch被“嘲讽”之后,含泪添加
- Note|最适合宅男玩家的音游神作 音乐与跑酷的完美融合
- 我的世界|我的世界COS:五张来自于小朋友的作品,notch才是灵魂
- 面部|Notability就买断改订阅致歉,暗黑4守望2确认延期,长城发布大禹电池技术,脸书关闭人脸识别系统,这就是今天的其他大新闻!
- |《notability》删除收藏颜色方法
- rpg游戏|Notorious Studios正开发一款多人RPG游戏
- |《GoodNotes》查单词方法