区块链100讲:公开密钥算法不能不知道的4个概念

区块链学习笔记15——ETH状态树 区块链学习笔记15——ETH状态树 学习视频:北京大学肖臻老师《区块链技术与应用》 笔记参考:北京大学肖臻老师《区块链技术与应用》公开课系列笔记——目录导航页 引入 要实现的功能:地址到状态的映射 ETH的账户地址是160位的,一般表示成40个十六进制数 状态就是外部账户和合约账户的状态,包括余额、交易次数,合约账户还有代码和存储。 数据结构的组织形式 直观上用哈希表存储比较简单,我们将哈希表组织成一棵Merkle tree用来证明交易的合法性有什么问题? 当新区块发布,哈希表内容会改变,我们需要再次 阅读详情

image

区块链100讲上期我们讲了哈希算法和公开密钥算法,说到哈希算法提到了一个名词“Merkle tree”,梅克尔树,这棵树是啥呢?它是如何工作的呢,它们又能够提供些什么价值呢,现在以及未来的?我们这期来讲讲“Merkle tree”。

1

Merkle tree

梅克尔树,又叫哈希树,顾名思义,就是存储hash值的一棵树。是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,每个中间节点是它的两个孩子节点内容的哈希值,根节点也是由它的两个子节点内容的哈希值组成。

image

比特币的一个重要特性,这区块是存在一个多级数据结构中的 。一个区块的“哈希值”实际上只是 这个区块的头信息的哈希值,一个大约 200 个字节的数据,其中包含了时间戳,随机数,上一个区 块的哈希和一个存储了这个区块中所有交易的称之为默克尔树的数据结构的根哈希。

2

梅克尔树的结构和特征

image

如图,我们来看梅克尔树的数据结构,所有的数据区块两两分组(如图的最底层),指向这些数据的哈希指针被储存在上一层的父节点(parent node)中。

而这些父节点再次被两两分组,并且指向父节点的指针被储存在上一层的父节点中,一直持续这个过程,直到我们得到一个单一的区块,即树根节点。

根据梅克尔树的数据结构,我们可以清楚的了解到,只要我们记住最前面的树根节点的哈希指针,我们就可以根据哈希指针回溯到表中的任意位置,这让我们能保证表中的数据不被篡改。

如果有人篡改了梅克尔树底部的一些数据区块,会导致上一层的哈希指针不匹配,那么他不得不一直篡改上一层的哈希指针,直到数的顶端,而此刻,篡改即将终止,因为我们存储了树根节点的哈希指针。

因此,只要我们记住树根顶部的哈希指针,任何企图篡改数据的行为都会被检测到,这让数据篡改变得不可能实现。

梅克尔树的特点:

  • MT是一种树,大多数是二叉树,也可以多叉树,无论是几叉树,它都具有树结构的所有特点;

  • Merkle Tree的叶子节点的value是数据集合的单元数据或者单元数据HASH。

  • 非叶子节点的value是根据它下面所有的叶子节点值,然后按照Hash算法计算而得出的。

通常,加密的hash方法像SHA-2和MD5用来做hash。但如果仅仅防止数据不是蓄意的损坏或篡改,可以改用一些安全性低但效率高的校验和算法,如CRC。

Second Preimage Attack: Merkle tree的树根并不表示树的深度,这可能会导致second-preimage attack,即攻击者创建一个具有相同Merkle树根的虚假文档。一个简单的解决方法在Certificate Transparency中定义:当计算叶节点的hash时,在hash数据前加0x00。当计算内部节点是,在前面加0x01。另外一些实现限制hash tree的根,通过在hash值前面加深度前缀。因此,前缀每一步会减少,只有当到达叶子时前缀依然为正,提取的hash链才被定义为有效。

3

梅克尔树的形式

1、二进制梅克尔树

梅克尔树最为常见和最简单的形式,是二进制梅克尔树( binary Mekle tree),其中一bucket单位的数据块总是包含了两个相邻的块或哈希,它的描述如下:

image

那么,这种奇怪的哈希算法有什么好处么?为什么不直接将这些数据块串接成一个单独的大块,用常规的哈希算法进行呢?答案在于,它允许了一个整齐的机制,我们称之为梅克尔证明(Merkle proofs):

image

一个梅克尔证明包含了一个数据块,这颗梅克尔树的根哈希,以及包含了所有沿数据块到根路径哈希的“分支”。有人认为,这种证明可以验证哈希的过程,至少是对分支而言。应用也很简单:假设有一个大数据库,而该数据库的全部内容都存储在梅克尔树中,并且这颗梅克尔树的根是公开并且可信的(例如,它是由足够多个受信方进行数字签名过的,或者它有很多的工作量证明)。那么,假如一位用户想在数据库中进行一次键值查找(比如:“请告诉我,位置在85273的对象”),那他就可以询问梅克尔证明,并接受到一个正确的验证证明,他收到的值,实际上是数据库在85273位置的特定根。它允许了一种机制,既可以验证少量的数据,例如一个哈希,也可以验证大型的数据库(可能扩至无限)。

比特币系统的梅克尔证明

梅克尔证据的原始应用是比特币系统(Bitcoin),它是由中本聪(Satoshi Nakamoto)在2009年描述并且创造的。比特币区块链使用了梅克尔证明,为的是将交易存储在每一个区块中:

image

而这样做的好处,也就是中本聪描述到的“简化支付验证”(SPV)的概念:而不是下载每一笔交易以及每一个区块,一个“轻客户端”(light client)可以仅下载链的区块头,每个区块中仅包含五项内容,数据块大小为80字节:

  • 上一区块头的哈希值

  • 时间戳

  • 挖矿难度值

  • 工作量证明随机数(nonce)

  • 包含该区块交易的梅克尔树的根哈希

如果一个轻客户端希望确定一笔交易的状态,它可以简单地要求一个梅克尔证明,显示出一个在梅克尔树特定的交易,其根是在主链(main chain,非分叉链)上的区块头。

它会让我们走得很远,但比特币的轻客户确实有其局限性。一个特别的限制是,它们虽然可以证明包含的交易,但无法证明任何当前的状态(例如:数字资产的持有,名称注册,金融合约的状态等)。你现在拥有了多少个比特币?一个比特币轻客户端,可以使用一种协议,它涉及查询多个节点,并相信其中至少会有一个节点会通知你,关于你的地址中任何特定的交易支出,而这可以让你实现更多的应用。但对于其他更为复杂的应用而言,这些远远是不够的。一笔交易影响的确切性质(precise nature),可以取决于此前的几笔交易,而这些交易本身则依赖于更为前面的交易,所以最终你可以验证整个链上的每一笔交易。为了解决这个问题,以太坊的梅克尔树的概念,会更进一步。

以太坊的梅克尔证明

以太坊的每一个区块头,并非只包含一颗梅克尔树,而是包含了三颗梅克尔树,分别对应了三种对象:

  • 交易(Transactions)

  • 收据(Receipts,基本上,它是展示每一笔交易影响的数据条)

  • 状态(State)

image

这使得一个非常先进的轻客户端协议成为了可能,它允许轻客户端轻松地进行并核实以下类型的查询答案:

  • 这笔交易被包含在特定的区块中了么?

  • 告诉我这个地址在过去30天中,发出X类型事件的所有实例(例如,一个众筹合约完成了它的目标)

  • 目前我的账户余额是多少?

  • 这个账户是否存在?

  • 假装在这个合约中运行这笔交易,它的输出会是什么?

第一种是由交易树(transaction tree)来处理的;第三和第四种则是由状态树(state tree)负责处理,第二种则由收据树(receipt tree)处理。计算前四个查询任务是相当简单的。服务器简单地找到对象,获取梅克尔分支,并通过分支来回复轻客户端。

第五种查询任务同样也是由状态树处理,但它的计算方式会比较复杂。这里,我们需要构建下我们称之为梅克尔状态转变的证明(Merkle state transition proof)。从本质上来讲,这样的证明也就是在说“如果你在根S的状态树上运行交易T,其结果状态树将是根为S’,log为L,输出为O” (“输出”作为存在于以太坊的一种概念,因为每一笔交易都是一个函数调用,它在理论上并不是必要的)。

为了推断这个证明,服务器在本地创建了一个假的区块,将状态设为 S,并假装是一个轻客户端,同时请求这笔交易。也就是说,如果请求这笔交易的过程,需要客户端确定一个账户的余额,这个轻客户端会发出一个余额疑问。如果这个轻客户端需要检查存储在一个特定合约的特定项目,该轻客户端会对此发出针对查询。服务器会正确地“回应”它所有的查询,但服务器也会跟踪它所有发回的数据。然后,服务器会把综合数据发送给客户端。客户端会进行相同的步骤,但会使用它的数据库所提供的证明。如果它的结果和服务器要求的是相同的,那客户端就接受证明。

image

2、帕特里夏树(Patricia Trees)

前面我们提到,最为简单的一种梅克尔树是二进制梅克尔树。然而,以太坊所使用的梅克尔树则更为复杂,我们称之为“梅克尔.帕特里夏树”(Merkle Patricia tree)。

二进制梅克尔树对于验证“清单”格式的信息而言,它是非常好的数据结构,本质上来讲,它就是一系列前后相连的数据块。而对于交易树来说,它们也同样是不错的,因为一旦树已经建立,花多少时间来编辑这颗树并不重要,树一旦建立了,它就会永远存在。

而对状态树来说,情况会更复杂些。以太坊中的状态树基本上包含了一个键值映射,其中的键是地址还有各种值,包括账户的声明、余额、随机数、代码以及每一个账户的存储(其中存储本身就是一颗树)。例如,摩登测试网络(the Morden testnet )的创始状态如下所示:

{"0000000000000000000000000000000000000001": {"balance": "1"},"0000000000000000000000000000000000000002": {"balance": "1"},"0000000000000000000000000000000000000003": {"balance": "1"},"0000000000000000000000000000000000000004": {"balance": "1"},"102e61f5d8f9bc71d0ad4a084df4e65e05ce0e1c": {"balance": "1606938044258990275541962092341162602522202993782792835301376"}}

然而,不同于交易历史记录,状态树需要经常地进行更新:账户余额和账户的随机数nonce经常会更变,更重要的是,新的账户会频繁地插入,存储的键( key)也会经常被插入以及删除。而这样的数据结构设计,我们可以在一次插入、更新编辑或者删除操作之后,快速地计算出新的树根(tree root),而无需重新计算整颗树。此外,它还有两个灰常好的次要特性:

  • 树的深度是有限制的,即使考虑攻击者会故意地制造一些交易,使得这颗树尽可能地深。不然,攻击者可以通过操纵树的深度,执行拒绝服务攻击(DOS attack),使得更新变得极其缓慢。

  • 树的根只取决于数据,和其中的更新顺序无关。换个顺序进行更新,甚至重新从头计算树,并不会改变根。

而帕特里夏树,简单地说,或许最接近的解释是,我们可以同时实现所有的这些特性。其工作原理,最为简单的解释是,一个以编码形式存储到记录树的“路径”的值。每个节点会有16个子(children),所以路径是由十六进制编码来确定的:例如,狗(dog)的键的编码为6 4 6 15 6 7,所以你会从这个根开始,下降到第六个子,然后到第四个,并依次类推,直到你达到终点。在实践中,当树稀少时也会有一些额外的优化,我们会使过程更为有效,但这是基本的原则。

4

Merkle Tree的操作

1、创建Merckle Tree

加入最底层有9个数据块。

  • step1:(红色线)对数据块做hash运算,Node0i = hash(Data0i), i=1,2,…,9

  • step2: (橙色线)相邻两个hash块串联,然后做hash运算,Node1((i+1)/2) = hash(Node0i+Node0(i+1)), i=1,3,5,7;对于i=9, Node1((i+1)/2) = hash(Node0i)

  • step3: (黄色线)重复step2

  • step4:(绿色线)重复step2

  • step5:(蓝色线)重复step2,生成Merkle Tree Root

image

易得,创建Merkle Tree是O(n)复杂度(这里指O(n)次hash运算),n是数据块的大小。得到Merkle Tree的树高是log(n)+1。

2、检索数据块

为了更好理解,我们假设有A和B两台机器,A需要与B相同目录下有8个文件,文件分别是f1 f2 f3 ….f8。这个时候我们就可以通过Merkle Tree来进行快速比较。假设我们在文件创建的时候每个机器都构建了一个Merkle Tree。具体如下图:

image

从上图可得知,叶子节点node7的value = hash(f1),是f1文件的HASH;而其父亲节点node3的value = hash(v7, v8),也就是其子节点node7 node8的值得HASH。就是这样表示一个层级运算关系。root节点的value其实是所有叶子节点的value的唯一特征。

假如A上的文件5与B上的不一样。我们怎么通过两个机器的merkle treee信息找到不相同的文件? 这个比较检索过程如下:

  • Step1. 首先比较v0是否相同,如果不同,检索其孩子node1和node2.

  • Step2. v1 相同,v2不同。检索node2的孩子node5 node6;

  • Step3. v5不同,v6相同,检索比较node5的孩子node 11 和node 12

  • Step4. v11不同,v12相同。node 11为叶子节点,获取其目录信息。

  • Step5. 检索比较完毕。

以上过程的理论复杂度是Log(N)。过程描述图如下:

image

从上图可以得知真个过程可以很快的找到对应的不相同的文件。

3、更新,插入和删除

虽然网上有很多关于Merkle Tree的资料,但大部分没有涉及Merkle Tree的更新、插入和删除操作,讨论Merkle Tree的检索和遍历的比较多。我也是非常困惑,一种树结构的操作肯定不仅包括查找,也包括更新、插入和删除的啊。后来查到stackexchange上的一个问题,才稍微有点明白。

对于Merkle Tree数据块的更新操作其实是很简单的,更新完数据块,然后接着更新其到树根路径上的Hash值就可以了,这样不会改变Merkle Tree的结构。但是,插入和删除操作肯定会改变Merkle Tree的结构,如下图,一种插入操作是这样的:

image

插入数据块0后(考虑数据块的位置),Merkle Tree的结构是这样的:

image

在考虑一种插入的算法,满足下面条件:

  • re-hashing操作的次数控制在log(n)以内
  • 数据块的校验在log(n)+1以内
  • 除非原始树的n是偶数,插入数据后的树没有孤儿,并且如果有孤儿,那么孤儿是最后一个数据块

  • 数据块的顺序保持一致

  • 插入后的Merkle Tree保持平衡

然后上面的插入结果就会变成这样:

image

Merkle Tree的插入和删除操作其实是一个工程上的问题,不同问题会有不同的插入方法。如果要确保树是平衡的或者是树高是log(n)的,可以用任何的标准的平衡二叉树的模式,如AVL树,红黑树,伸展树,2-3树等。这些平衡二叉树的更新模式可以在O(lgn)时间内完成插入操作,并且能保证树高是O(lgn)的。那么很容易可以看出更新所有的Merkle Hash可以在O((lgn)2)时间内完成(对于每个节点如要更新从它到树根O(lgn)个节点,而为了满足树高的要求需要更新O(lgn)个节点)。如果仔细分析的话,更新所有的hash实际上可以在O(lgn)时间内完成,因为要改变的所有节点都是相关联的,即他们要不是都在从某个叶节点到树根的一条路径上,或者这种情况相近。

实际上Merkle Tree的结构(是否平衡,树高限制多少)在大多数应用中并不重要,而且保持数据块的顺序也在大多数应用中也不需要。因此,可以根据具体应用的情况,设计自己的插入和删除操作。一个通用的Merkle Tree插入删除操作是没有意义的。

Merkle Tree目前的应用范围包括:数字签名、P2P网络、Trusted Computing、比特币以太坊的梅克尔证明等。

内容来源:

Vitalik Buterin博客、优快云-星空专栏、陈建慧程序人生,公众号-Astar区块链实验室、币姥爷日记

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

image

MAC算法与公开密钥算法:从原理到实战的安全基石 在信息安全领域,密码学是保障数据机密性、完整性与真实性的核心技术。其核心原理在于通过数学方法对信息进行变换,使得只有授权方能够访问或验证。从技术价值看,密码学不仅解决了通信双方的身份认证与防篡改问题,更实现了在开放网络中安全交换密钥的难题。在实际应用场景中,HMAC算法与RSA、ECC等公开密钥算法协同工作,构成了HTTPS、API签名、数字证书等现代安全协议的基石。本文聚焦于消息认证码与公开密钥算法这两大基础概念,通过对比分析HMAC与数字签名的差异,并结合TLS/SSL协议中的实际应用,深入解析其协同工 阅读详情

相关推荐

区块链入门教程

1.什么是区块链 从字面上看: 区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,包括:谁叠的,什么时候叠的,砖头用了什么材质等等,这些信息你也没办法修改。 从计算机上看: 区块链是一种比较特殊的分布式数据库。分布式数据库就是将数据信息单独放在每台计算机,且存储的信息的一致的,如果有一两台计算机坏掉了,信息也不会丢失,你还可以在其他计算机上查看到。 区块链是一种分布式的...

WPSir的博客 2115

区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!

区块链100讲上期我们讲了哈希算法和公开密钥算法,说到哈希算法提到了一个名词“Merkle tree”,梅克尔树,这棵树是啥呢?它是如何工作的呢,它们又能够提供些什么价值呢,现在以及未来的?我们这期来讲讲“Merkle tree”。 1 Merkle tree 梅克尔树,又叫哈希树,顾名思义,就是存储hash值的一棵树。是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含...

weixin_33749131的博客 927

Python驱动COMSOL自动化:从数据生成到DNN代理模型部署全流程解析

本文详细解析了如何利用Python驱动COMSOL实现全流程自动化,从参数化建模、批量仿真数据生成,到训练深度神经网络(DNN)代理模型并部署应用。该方案通过自动化闭环解放工程师生产力,并利用代理模型实现秒级性能预测,极大提升了多物理场仿真优化与设计探索的效率。

weixin_29041767的博客 212

Merkle Tree(默克尔树)算法解析

Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1]1、HashHash是一个把任意长度的数据映射成固定长度数据的函数[2]。例如,对于数据完整性校验,最简单的方法是对整个数据做Hash运算得到固定长度的Has

程序新视界 12万+

基于单目视觉的四旋翼定点降落——如何通过mavros控制pixhawk(二)

    一直拖了这么久没有更新,怪我太懒啦~~~ 今天要特别感谢舒仔仔同学,我的好队友帮我写了这篇博文。这篇文章主要讲了如何通过mavros来控制pixhawk。硬件逻辑是这样子,我们先搞一个odroid(土豪上TX2),再用usb线将odroid与pixhawk连接。所以,odroid发送控制指令来控制pixhawk飞行。pixhawk与外界的通信协议是mavlink。ROS下面有个包叫mavr...

zhengyuxin0507的博客 1万+

浮点数运算的陷阱与启示:FP16加法器/乘法器开发中的常见误区

本文深入探讨FP16加法器和乘法器开发中的常见误区,包括FP16格式解析、阶码对齐陷阱、尾数运算风险及规格化处理。通过Verilog实战代码展示防御性编程技巧,帮助开发者避免边界条件处理和异常状态管理中的错误,提升硬件设计的可靠性和效率。

dell8的博客 251

区块链中的Merkle树有何作用?

同时,Merkle树还可以帮助提高智能合约的透明度和可审计性,提高用户对智能合约的信任度和接受度。在未来,随着区块链技术的不断发展,我们可以预见Merkle树将在更多的领域发挥重要作用,为人们的生活带来更多的便利和价值。通过Merkle树的挖矿过程,区块链网络中的节点可以共同构建一个完整且不可篡改的数据树,从而实现共识和交易。在数据存储方面,Merkle树被广泛应用于数据区块的生成和验证。随着区块链技术的飞速发展,Merkle树作为区块链领域的一个重要组成部分,其在技术中的应用和作用越来越受到人们的关注。

2501_90410679的博客 218

储能变流器(Power Control System——PCS)设计原理

储能变流器(Power Control System——PCS)可控制蓄电池的充电和放电过程,进行交直流的变换,在无电网情况下可以直接为交流负荷供电。PCS 由 DC/AC 双向变流器、控制单元等构成。PCS 控制器通过通讯接收后台控制指令,根据功率指令的符号及大小控制变流器对电池进行充电或放电,实现对电网有功功率及无功功率的调节。 PCS 控制器通过 CAN 接口与 BMS 通讯,获取电池组状态信息,可实现对电池的保护性充放电,确保电池运行安全。   储能变流器(PCS)可控制蓄电池的充电和放电过程,进

Zhouengineer的博客 5万+

操作系统( 第二章)知识点总结

第二章 进程管理 2.1 前驱图和程序执行 前驱图是一个有向无循环图,记为DAG,可用于描述程序/进程之间执行的前后关系。 程序的顺序执行:在计算机系统中只有一个程序在运行,这个程序独占系统中所有资源,其执行不受外界影响,一道程序执行完后另一道才开始。 特点:顺序性、封闭性、可再现性(程序的结果与运行时间无关,只与初始条件有关) 程序的并发执行:若干程序同时在系统中执行,这些程序的执行的执行在时间上是重叠的,一个程序的执行尚未结束,另一个程序的执行已经开始。 ...

qq_50777680的博客 5114

citespace基本操作

聚类分析 时间线图 这些结果都是高被引文献的相关呈现结果,代表该领域的文献基础 下面可以看看该project的前沿领域 选择keywords 和term go! 调整显示方式 生成凸线图:表示 在某个研究领域或者时间段内 ,大家对某个领域或者某个词的关注度突然增高,凸显前沿方向的转变 以此来发现热点 ...

生信小博士的博客 1万+

从外包到转正:一个华为OD亲历者的真实工作体验与避坑指南

本文分享了一位华为OD员工从外包到转正的真实经历与实用建议。通过详细解析华为OD的日常工作、转正核心指标、机试备考技巧及职场突围策略,为读者提供了一份全面的避坑指南。特别针对机试E卷的高频考点和刷题方法,给出了具体的数据分析和实战经验。

weixin_33686714的博客 708

想理解区块链,你还需要知道这些概念!

今天已经到了我们王团长区块链新生聚集地链圈百科第五期啦,之前已经给大家科普了区块链和场外交易等基础概念。但是仅仅明白了区块链是什么还不够,今天就给各位科普一下和区块链相关的6个概念。1.区块区块链由一串使用密码学算法产生的区块连接而成。那么区块链最基本的单元,区块又是什么呢?区块包括区块头和区块主体,区块头大小是80字节,用来存储结构化的数据,区块主体是用来记录一段时间里所有交易信息,所需空间比较...

xinshengdaxue000的博客 594

39、低功耗处理器性能评估与Cortex - M23/M33低功耗特性解析

本文深入解析了Cortex-M23和Cortex-M33处理器的低功耗特性及其性能评估方法。介绍了ULPMark、CoreMark、IoTMark-BLE和SecureMark-TLS等基准测试在能效评估中的应用,并详细阐述了处理器的睡眠模式、系统控制寄存器(SCR)配置、WFI/WFE指令、退出时睡眠、挂起时发送事件(SEVONPEND)以及唤醒中断控制器(WIC)等关键低功耗机制。结合状态保留技术,展示了如何通过芯片级设计大幅降低泄漏电流,实现高效能低功耗的物联网与嵌入式系统设计。

Pepper的专栏 130

【区块链与密码学】第2-4讲:区块链基础技术大剖析之数字签名

【本课堂内容全部选编自PlatON首席密码学家、武汉大学国家网络安全学院教授、博士生导师何德彪教授的《区块链与密码学》授课讲义、教材及互联网,版权归属其原作者所有,如有侵权请立即与我们联系,我们将及时处理。】 2.4.2 数字签名 昨天我们讲到区块链基础技术之一的哈希函数,今天这一讲我们来认识另一个区块链的基础技术——数字签名。 数字签名从字面上理解,是数字化签名。签名由来已久,用途极广。早在中国古代签名便已经广泛应用。我们最熟悉的可能是电视剧中,官老爷升堂断案,对堂下贫民,私用大刑

Digquant的博客 1352

使用 ABAP 代码动态创建新的 Function Module

通过内表。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 6912

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

区块链100讲:HTTPS协议的原理及其与HTTP协议的区别

1 HTTPS协议是什么 https协议比http协议多了一个s,字面意思上s=secure(安全)。它跟http协议一样都是应用层协议,都是工作在TCP协议之上。 只不过https协议在传输过程中的数据都是经过了加密。本质上HTTPS协议就是在TCP协议之上又加了一层SSL协议来实现了加密这个操作(不准确的说HTTPS就就是披着是SSL的皮的HTTP协议) 2 HTTPS和HTTP的区别 ...

HiBlock的博客 897

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

区块链100讲:从村里的账本来看什么是区块链

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33923148的博客 124

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

区块链入门教程——什么是区块链?

什么是区块链?字面上看:区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,包括:谁叠的,什么时候叠的,砖头用了什么材质等等,这些信息你也没办法修改。从计算机上看:区块链是一种比较特殊的分布式数据库。分布式数据库就是将数据信息单独放在每台计算机,且存储的信息的一致的,如果有一两台计算机坏掉了,信息也不会...

johnli1989的博客 1853

区块链之非对称加密算法

非对称加密,在现在网络应用中,有这非常广泛的场景,更是加密货币的基础。本文主要介绍非对称加密、解密的原理和过程,以及在区块链中的使用。 一、非对称加密解密过程 A要向B发送信息,A和B都要产生一对用于加密、解密的公钥和私钥 A保管自己的私钥,把公钥告诉B;B保管自己的私钥,把公钥告诉A A要给B发送信息时,A用B的公钥加密信息,因为A知...

weixin_34150224的博客 2584

【干货】区块链技术生态的设计|《白话区块链》作者蒋勇分享实录

本节内容主要是关于区块链本身的一个技术栈的介绍。站在一个比较基础的、相对技术的角度,来介绍区块链的组成原理、及其价值。

HiBlock的博客 1577

区块链100讲:盘点那些常用的加密算法原理

在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 1 对称加密 原理:加密和解密数据使用同一个密钥,适合对大量数据进行加解密 安全性:关键是密钥的保存方式,加密或是解密的任何一方泄漏密钥,都会导致信息泄漏 代表算法:DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等 对称密码常用的数学运算: **移位和循环移位** 移位就是将一段数码...

weixin_33935777的博客 519

一文读懂区块链

什么是区块链? 从字面上看:区块链是由一个个记录着各种信息的小区块链接起来组成的一个链条,类似于我们将一块块砖头叠起来,而且叠起来后是没办法拆掉的,每个砖头上面还写着各种信息,包括:谁叠的,什么时候叠的,砖头用了什么材质等等,这些信息你也没办法修改。 从计算机上看:区块链是一种比较特殊的分布式数据库。分布式数据库就是将数据信息单独放在每台计算机,且存储的信息的一致的,如果有一两台计算机坏掉了,信息...

caoyuan666的博客 850
上一篇: 区块链100讲:据说,80%的人都搞不懂哈希算法
下一篇: EOS劲敌叫阵,以太坊借力“分片技术”能否继续捍卫霸主地位?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值