区块链笔记-Hash算法
链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
区块链笔记-Hash算法
区块链技术是一系列技术的结合,建立新的技术架构,hash算法是很重要的一块,如果理解不当的地方请指点更正。
Hash算法将任意长度的二进制值映射成为固定长度并且较短的二进制值,这个就成为哈希值。其是一段数据唯一且紧凑的数值表示形式。找到同一值的不同的输入,在计算机上是不可能的,数据的哈希值可以检验数据的完整性,一般用于快速查找和加密算法。
Hash算法是一种单向的加密,一个明文加密称密文,不可推逆,只有加密过程没有解密过程。目前常用的hash算法由MD5。SHA系列算法。
解释到这里,可能会联想到,hash算法中key在计算后如果出现了同一位置,冲突的产生,这里简单说下几种冲突处理。
1.拉链法:这种方法可以完全避免冲突,将所有关键字为同义词的结点链接在同一个单链表中。
2.多哈希法:设计两种以上的hash函数,避免冲突。
3.开放地址法:开放地址法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1),其中,m为哈希表的表长。di 是产生冲突的时候的增量序列。如果di值可能为1,2,3,…m-1,称线性探测再散列。如果di取1,则每次冲突之后,向后移动1个位置.如果di取值可能为1,-1,4,-4,9,-9,16,-16,…kk,-kk(k<=m/2),称二次探测再散列。如果di取值可能为伪随机数列。称伪随机探测再散列。
结合区块链,在区块链中很多地方都用到了hash函数:
1.区块链中节点的地址、公钥、私钥的计算。以地址为例:公钥经过一次SHA256计算,再进行一次RIPEMD160计算,得到一个公钥哈希(20字节\160比特),添加版本信息,再来两次SHA256运算、取前4比特字节,放到哈希公钥加版本信息后,再经过base58编码,最终得到地址。
2.merkle tree:是数据结构中的一种树结构,可以是二叉树,也可以是多叉树,他和数据结构中树的特点几乎一致,和普通树不同的是:merkle tree上的叶节点存放hash计算后的hash值,非叶节点是其对应的子节点串联的字符串的hash值。用于区块头和SPV认证中。
3.比特币中的挖矿,工作量证明(pow),计算的其实就是一个nonce,当这个随机数和其他散列过的数据合并时,产生一个比规定目标小(target)值。挖矿也可以理解一种快速不可逆的计算。SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET。
4.比特币中的bloom filter布隆过滤器,布隆过滤器基于hash函数的快速查找。解决了客户端检索的问题,原理是Bloom filter可以快速判断出某检索值一定不存在于某个指定的集合,从而可以过滤掉大量无关数据,减少客户端不必要的下载量。
简单介绍了HASH算法和区块链中用到的HASH算法,区块链是多个技术的结合,会出现一种新的技术结构,Hash算法和加密技术为区块链的自证信用和安全控制提供了基础。
那么今天就讲到这,也许有不对的地方,希望链客社区的大神可以指点迷津,让我的技术得到提高,感谢。
相关文章:

Thrift源码解析--TBinaryProtocol
本文为原创:http://www.cnblogs.com/leehfly/p/4958206.html,未经许可禁止转载。 关于Tprotocol层都是一些通信协议,个人感觉内容较大,很难分类描述清楚。故打算以TBinaryProtocol为例,分析客户端发请求以及接收服务端返回数据的整…

一篇价值百万的文章:我为什么在22岁辞去年薪150万的工作?
本文转载自http://www.cricode.com/4208.html 作者:奶牛Denny 今天是22岁的最后一天。几个月前,我从沃顿商学院毕业,用文凭上“最高荣誉毕业”的标签安抚了已经年过半百的老妈,然后转头辞去了毕业后的第一份工作,跟一…

电脑温度检测软件哪个好_一般电脑录音软件哪个好?
随着科技的快速发展,为了满足各行各业的音频录制需求,电脑版录音软件也在陆续不断的出现在各大应用市场,与传统的自带音频录制工具相比,电脑版录音软件更加专注的是电脑上的音频录制,它能够将发生在电脑上的一切声音源…

区块链的隐私性
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 我最近看区块链简单介绍的时候会发现有的人就说其有良好的隐私性,但也有人说保护隐私性上有缺陷,今天就简单的对区块链的隐私…

ssh免密连接远程服务器
ssh免密连接远程服务器 借助ssky-keygen和ssh-copy-id工具,通过4个简单的步骤实现无需输入密码登录远程Linux主机 1 生成密钥 通过内置的工具生成RSA算法加密的密钥 ssh-keygen -t rsa 回车默认选项即可,会在当前用户的home文件下生成密钥文件 2 拷贝密钥…

什么是互联网大厂_仅限今天!大厂最热数据分析经典实战项目大公开!
原标题:仅限今天!大厂最热数据分析经典实战项目大公开!如今,全球早已步入数据时代,随着行业的高速发展,相关岗位缺口已超150万,且薪资超同行业50%。未来十年,数据细分岗位将扩张5倍&…

php教学视频
http://www.52pojie.cn/forum.php?modviewthread&tid283589转载于:https://www.cnblogs.com/dawanxiaobao/p/5703157.html

Go基础编程:作用域
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Go基础编程:作用域11 小弟初学go语言,感觉作用域的运用还是很广泛的,所以就写上一点,也许有的都是很…

数据分析之CE找数据大法
一.基本介绍 CE的全称为Cheat Engine,是一款内存修改编辑工具,其官网是http://www.cheatengine.org,可以在其官网下载到最新的CE工具,目前最新版本是Cheat Engine6.5。CE同时也是一款开源的工具,使用者可以…

a++浏览器_“公司发给我的职业装太小了,我该怎么和领导说?”哈哈哈哈哈|职业装|uc|浏览器...
GIF打开UC浏览器 查看更多精彩图片GIF打开UC浏览器 查看更多精彩图片GIF打开UC浏览器 查看更多精彩图片GIF打开UC浏览器 查看更多精彩图片GIF打开UC浏览器 查看更多精彩图片GIF打开UC浏览器 查看更多精彩图片GIF打开UC浏览器 查看更多精彩图片打开UC浏览器 查看更多精彩图片GIF…

Go基础编程:延迟调用defer
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 本篇文章所讲的就是go编程中的延迟调用defer,希望对社区的成员有较多的帮助。 1 defer作用 关键字defer ⽤于延迟一个函数、方法或者当…

maven工程插件配置
1 <build>2 <!-- 该级工程会加载插件,放在父工程里 -->3 <plugins>4 <!-- 资源文件拷贝插件 -->5 <plugin>6 <groupId>org.apache.maven.plugins</groupId>7 …

卡巴斯基安全浏览器_卡巴斯基 for windows 全方位安全软件2021注册表清除版
软件介绍最近从来不相信木马的Run同学中招了,wup.exe(俗称矿机木马),此款木马真可谓厉害,无敌,用过所有方法都无法清理,百度了所有的道道几乎无用,中了此毒,电脑不会有什么特别异常,…

Android通过ksoap2调用.net(c#)的webservice
转载于:https://www.cnblogs.com/Nagisa-Saku/p/5706183.html

●洛谷P3688 [ZJOI2017]树状数组
题链: https://www.luogu.org/problemnew/show/P3688题解: 二维线段树。 先不看询问时l1的特殊情况。 对于一个询问(l,r),如果要让错误的程序得到正确答案, 显然应该满足l-1位置的值r位置的值(或者说两个位置的异或值…

Activity-生命周期
Activity不是什么陌生的东西,作为Android程序媛对Activity再熟悉不过。每当说起Activity总最关注的还是它的生命周期。 1、一张来自谷歌官方文档的Activity的生命周期图: 直接来个MainActivity覆盖上面所有的方法通过log打印方式给大家展现,通…

arial unicode ms字体_5个检测商用字体和免费字体合集的网站
对于做新媒体和设计的小伙伴来说,最恐慌的就是加班、改稿、脱发、没钱...侵权问题了。一个不注意就是律师函警告。正所谓律师函不是不到,只是晚到。所以,皮皮特意为小伙伴们搜集了这5个远离字体侵权的网站,有检测字体版权的&#…

DAPP是什么
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1 DAPP是什么1 当满足下所有条件的时候,一个应用才可以称为DAPP [if !supportLists]1. [endif]必须是开源、自治并没有一个实体控制着…

JVM学习--(一)基本原理
前言 JVM一直是java知识里面进阶阶段的重要部分,如果希望在java领域研究的更深入,则JVM则是如论如何也避开不了的话题,本系列试图通过简洁易读的方式,讲解JVM必要的知识点。 运行流程 我们都知道java一直宣传的口号是:…

phpexcel导出超过26列解决方案
phpexcel导出超过26列解决方案 原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下: PHPExcel_Cell::stringFromColumnIndex($i); // 从o,1,2,3,..开始,相应返回返回 A,B,C,...Z,AA,AB,...将列的字母转成数字序号使用,代码如下: PHPExcel_Cell::columnIn…

h5大转盘抽奖源码后台_微信H5互动营销应该要如何做?
现在微信营销的队伍有越来越多的人群,许多的企业品牌都会选择用微信营销,而微信营销这么受欢迎是因为微信拉近了用户与企业品牌的关系。其中H5互动营销是最受欢迎的一种方式,那么微信H5互动营销要如何做呢?企业想要在微信H5营销中…

Solidity语言
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Solidity语言11 Solidity是以太坊智能合约的编程语言,我自己也是学习了很久,感觉是有些难度,所以需要去认真的去…

同一个类 cannot be cast to_留学热门assignment之 税收筹划类essay
税法和税务筹划一直以来都是热门的行业,由于近些年对于税务人才的需求越来越大,税法专业成为了当下最火爆的留学专业之一。发达国家由于税收和法律体系相对完善,法律的条文相较于其他国家而言也更加的细致和有操作性,因此…

LeetCode 7. Reverse Integer
问题链接 LeetCode 7 题目解析 给定一个32位有符号整数,求其反转数字。 解题思路 如果是简单反转的话,那这道题就太简单了。题目要求判断溢出问题,32位int类型的范围是-2147483648~2147483647。数字反转过后是有可能超出范围的&am…

Ultra-QuickSort POJ 2299(归并排序)
http://acm.hust.edu.cn/vjudge/contest/124435#problem/D 题意:给出一个长度为n的数列,你每一次可以随意交换其中两个数字的位置。问你至少交换几次,才能使得这个数列是个单调递增数列。 比赛时没做出来,(自然&#x…

Geth 控制台使用及 Web3.js 使用实战
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 突然发现没有太多写实战的,所以就写一点自己的拙见,提供给成员一些参考。Geth 控制台(REPL)实现了所…

Java多线程的同步机制(synchronized)
一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程…

mouseenter 延迟_桃园台服加速器 电狐加速器带你低延迟玩游戏
桃园是由冰动娱乐自主研发的全球首款运用世界顶级开发引擎Unreal Engine 3的次世代回合制网络游戏。Unreal 3引擎在骨骼动画树、特效渲染、游戏性完善等方面表现杰出,而且游戏中还可以呈现广角纵身大场景,1080P的高清画质将会带给玩家前所未有的视觉震撼…

私有链的特点简单介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 私有链是区块链的一种,它指的是某个区块链的写入权限仅掌握在某个人或某个组织手中,数据的访问以及编写等有着十分严格的权限…

typescript调用javascript URI.js
URI.js URI.js是一个用于处理URL的JavaScript库它提供了一个“jQuery风格”的API(Fluent接口,方法链接)来读写所有常规组件和许多便利方法,如.directory()和.authority()本文以URI.j…