为广大币圈朋友提供币圈基础入门专业知识!
当前位置首页 > 比特币基础> 正文

区块链加密货币是什么,区块链加密数字货币是什么

发布时间:2024-01-28-00:59:00 来源:网络 比特币基础 区块   ctf

区块链加密货币是什么,区块链加密数字货币是什么


请查看相关英文文档

Ⅰ区块链和加密货币有什么关系?区块链和加密货币有什么区别?


区块链和加密货币有什么区别?很多人好奇我在币圈听说过区块链和加密货币吗?很多人对两者的关系感到困惑,或者不知道区块链和加密货币之间的关系。和小编一起来看看吧。我希望这篇文章可以帮助你。
什么是区块链
区块链是一个允许加密货币运行的平台。区块链是一种用作构成网络的分布式账本的技术,创建了一种交易手段并能够传递价值和信息,区块链是一种技术。区块链是一种分布式账本技术。每个块包都包含捆绑在一起并经过验证的信息和数据。验证通过后,连接到之前的transac块中的系统和信息是相连的。
什么是加密货币
加密货币是在这些网络中用于发送价值并支付这些交易的代币,与区块链相比,基于分布式账本技术的加密货币与代币的使用相关,您可以将加密货币视为区块链中的工具。在某些情况下,它可以用作资源或实用的程序功能。在其他情况下,它可以被视为数字资产的价值。
区块链和加密货币的区别
区块链是一项基础技术,加密货币是其生态系统的一部分。一般来说,在区块链上进行交易需要加密。他们需要共同发展、齐头并进。 ,如果没有区块链,我们将无法记录这些交易的发货和转账。

二什么是区块链加密算法

区块链加密算法(EncryptionAlgorithm)
非对称加密算法ryption算法是一种使用加密密钥,将原始明文文件或数据转换成一串不可读的密文代码的函数。加密过程是不可逆的。只有持有相应的解密密钥,才能将加密信息解密为可读的明文。加密允许私有数据通过公共网络以低风险传输,并保护数据不被第三方窃取和读取。
区块链技术的核心优势是去中心化。它可以利用数据加密、时间戳、分布式共识和经济激励,在节点无需相互信任的分布式系统中实现去中心化信用。点对点交易、协调协作,从而解决中心化机构普遍存在的成本高、效率低、数据存储不安全的问题。
区块链的应用领域包括数字货币、通证、FINA防伪溯源、隐私保护、供应链、娱乐等。随着区块链和比特币的流行,许多相关的顶级域名被注册。 ,对域名行业产生了比较大的影响。

三和数软件区块链技术如何实现数字加密

区块链是指以去中心化、去信任的方式集体维护可靠数据库的一种技术方案。该技术方案主要是让参与系统的任意数量的节点利用密码学的方法关联并生成一系列数据块(block)。每个数据块包含系统在一定时间内的所有信息交换数据,并生成数据指纹,用于验证其信息的有效性并链接到下一个数据库块。
区块链技术起源于比特币。其本质是利用计算机算法和密码学创建去中心化的数字货币系统,实现货币的发行和交易功能。
区块链技术的特点:
1.去中心化:整个网络没有中心化的硬件或管理机构,任何节点之间的权利和义务都是平等的,任何一个节点的损坏或丢失都不会影响整个系统的运行。因此,区块链系统也可以被认为具有出色的鲁棒性。

2.无信任:参与整个系统的各个节点之间的数据交换不需要相互信任。整个系统的运行规则是公开透明的,所有数据内容也是公开透明的。它是公开的,因此在系统规定的规则范围和时间范围内,节点不能也不能欺骗其他节点。
3.集体维护:系统中的数据块由系统内所有具有维护功能的节点共同维护ire系统,这些具有维护功能的节点任何人都可以参与。
4.可靠数据库:整个系统将被划分为多个数据库,以便每个参与节点都可以获得完整数据库的副本。除非可以同时控制整个系统51%以上的节点,否则对单个节点上的数据库的修改是无效的,不能影响其他节点上的数据内容。因此,参与系统的节点越多、计算能力越强,系统中的数据安全性就越高。
这四个特征将导致另外两个特征:
5.开源:由于整个系统的运行规则必须是公开透明的,所以对于程序来说,整个系统必须是开源的。
6.匿名性:由于节点不需要相互信任,因此节点之间不需要公开自己的身份。系统中的每个参与节点都是匿名的。

加密数字资产EGD:E-Gold Coin,简称EGD,是一种基于点对点互联网开源协议的网络加密数字资产。它在去中心化的网络系统中流通。 EGD作为全球商业消费者从商户获得的消费资产,用于替代传统商业社会中商户发行的积分,实现全球商户积分网络化、一体化、资本化。
EGD​​,互联网黄金,是一种基于去中心化数字加密技术生成的加密数字资产。 EGD诞生于2014年1月,由前微软工程师领导、由来自全球7个国家的17名技术专家组成的团队开发。 EGD将加密数字资产技术引入全球商业统一积分领域,让全球消费者通过EGD商业积分的流通和增值,持续分享商业社会的利润,创造了共赢的经济模式。商家和消费者。
定制化EGD的特点:
利用定制化技术,我们可以轻松构建基于EGD协议的多种智能资产,包括股票、债券或者各种衍生品点。
更重要的是,定制技术在扩大EGD应用范围的同时,仍然保留了EGD产权清晰、去中心化的特点。而且,由于定制点的数量有限,定制点更加稀缺。

四【深入知识】区块链加密原理图解(加密、签名)

先放一张以太坊的架构图:

中学习过程主要是用单个模块来学习和理解,包括P2P、密码学、网络、协议等,我们直接开始总结:

秘钥分发的问题也是秘密的问题密钥传输。如果密钥是对称的,那么 secret密钥只能离线交换。如果密钥在线传输,则可能会被截获。因此,采用非对称加密,有两个密钥,一个私钥保密,另一个公钥公开。公钥可以通过互联网传输。无需线下交易。确保数据安全。

如上图所示,节点A向节点B发送数据,此时采用公钥加密。节点A从自己的公钥中获取节点B的公钥,对明文数据进行加密,并将密文发送给节点B。节点B使用自己的私钥进行解密。

2.无法解决消息篡改。

如上图所示,节点A使用B的公钥进行加密,然后将密文传输给节点B。节点B使用节点A的公钥对密文进行解密。

1、由于A的公钥是公开的,一旦网络黑客截获了该消息,密文就毫无用处。把它说成蓝色当然,这种加密方式只要截获消息就可以解密。

2、还有无法确定消息来源的问题以及消息篡改的问题。

如上图所示,节点 A 在发送数据之前,先用 B 的公钥加密得到密文 1,然后再用 A 的私钥加密密文 1 得到密文 2。得到密文后,首先用A的公钥解密得到密文1,然后用B的私钥解密得到明文。

1、当网络上截获数据密文2时,由于A的公钥是公开的,所以可以用A的公钥解密密文2,得到密文1。所以这看起来是双重加密,但是实际上最后一层的私钥签名是无效的。一般来说,我们都希望签名是在最原始的数据上签名的。如果稍后签名,则由于公钥是公开的,签名缺乏安全性。

2.存在性能问题。非对称加密本身效率很低,要进行两次加密过程。

如上图所示,节点A先用A的私钥加密,再用B的公钥加密。节点B收到消息后,首先使用B的私钥解密,然后使用A的公钥解密。

1、当密文数据2被黑客截获时,由于密文2只能使用B的私钥才能解密,而B的私钥只有B节点拥有,其他人无法保密。因此,安全性是最高的。
2、节点B解密得到密文1时,只能使用A的公钥来解密。只有用A的私钥加密的数据才能用A的公钥成功解密。只有节点A拥有A的私钥,因此可以确定数据是节点A传输的。

经过两次不对称ic加密,性能问题严重。

基于上述数据篡改问题,我们引入了消息认证。消息认证后的加密过程如下:

节点A在发送消息之前,首先对明文数据进行哈希计算。得到摘要,然后将光照和原始数据同时发送到Node B。当节点B收到消息时,它解密该消息。解析出哈希摘要和原始数据,然后对原始数据进行相同的哈希计算,得到摘要1,并将摘要与摘要1进行比较,如果相同,则没有被篡改;如果它们不同,则它们已被篡改。

只要密文2在传输过程中被篡改,得到的hash就会与hash1不同。

签名问题无法解决,即双方互相攻击。 A 从不确认消息 he 发送。例如,A向B发送错误消息,导致B遭受损失。但A否认不是他自己寄的。

在(3)的过程中,没有办法解决交互双方之间的相互攻击问题。这意味着什么?可能A发送的消息对节点A不利。后来,A又否认该消息不是它发送的。

为了解决这个问题,引入了签名。这里我们将(2)-4中的加密方法与消息签名结合起来。

上图中,我们使用节点A的私钥对其发送的摘要信息进行签名,然后添加签名+原文,然后使用B的公钥进行加密。 B获得密文后,首先使用B的私钥解密,然后使用A的公钥解密摘要。仅比较两个摘要的内容,看看它们是否相同。这样既避免了防篡改的问题,又规避了pr双方攻击的问题。由于 A 签署了该信息,因此无法否认。

为了解决非对称加密数据时的性能问题,常常采用混合加密。这里我们需要引入对称加密,如下图:

在加密数据时,我们使用双方共享的对称密钥进行加密。对称密钥不应在网络上传输,以免丢失。这里的共享对称密钥是根据自己的私钥和对方的公钥计算出来的,然后用对称密钥来加密数据。对方收到数据时,也计算对称密钥并解密密文。

上面的对称密钥是不安全的,因为A的私钥和B的公钥一般在短期内是固定的,所以共享的对称密钥也是固定的。为了增强安全性,最好的方法是为每次交互生成一个临时的共享对称密钥。在。那么我们如何在每次交互过程中生成随机对称密钥而不传输它呢?

那么如何生成一个随机共享密钥进行加密呢?

对于发送方节点A来说,每次发送都会生成一个临时的非对称密钥对,然后根据节点B的公钥和临时的非对称私钥可以计算出对称密钥。 (KA算法-密钥协议)。然后使用对称密钥来加密数据。这里对于共享密钥的处理过程如下:

对于节点B来说,当接收到发送的数据时,解析出节点A的随机公钥。然后使用节点A的随机公钥和节点B本身的私钥计算对称密钥(KA算法)。然后使用对称密钥对数据进行加密。

对于上面的加密方法,还存在很多问题,比如如何避免重放攻击(在消息中添加Nonce),以及彩虹表(参考r 到 K 的 DF 机制解决了诸如 ) 之类的问题。由于时间和能力有限,我暂时忽略它。

那么应该使用什么样的加密呢?

主要根据要传输的数据的安全级别。不重要的数据其实是可以进行认证和签名的,但是非常重要的数据就需要使用安全级别比较高的加密方案。

密码套件是网络协议的一个概念。主要包括身份认证、加密、消息认证(MAC)、密钥交换等算法。

在整个网络传输过程中,算法按照密码套件主要分为以下几类:

密钥交换算法:如ECDHE、RSA等。主要用于客户端与服务器握手时的认证。

消息认证算法:如SHA1、SHA2、SHA3。主要用于消息摘要。

批量加密算法:这样一个s AES,主要用于加密信息流。

伪随机数算法:例如,TL​​S 1.2 的伪随机函数使用 MAC 算法的哈希函数来创建主密钥 - 双方共享的 48 字节私钥联系。在创建会话密钥(例如创建 MAC)时,主密钥充当熵源。

在网络中,消息传输一般需要经过以下四个阶段的加密,以保证消息传输的安全可靠。

握手/网络协商阶段:

双方握手阶段,需要进行链路协商。主要的加密算法有RSA、DH、ECDH等。

身份认证阶段:

在身份认证阶段,需要确定发送消息的来源。主要使用的加密方法有RSA、DSA、ECDSA(ECC加密、DSA签名)等。

消息加密阶段:

消息加密是指对发送的信息流进行加密。主要使用的加密方法有DES、RC4、AES等。

消息身份认证阶段/防篡改阶段:

主要保证消息在传输过程中不被篡改。传播。主要加密方式有MD5、SHA1、SHA2、SHA3等。

ECC:Elliptic Curves Cryptography,椭圆曲线密码学。它是一种基于椭圆上的点倍积生成公钥和私钥的算法。用于生成公钥和私钥。

ECDSA:用于数字签名,是一种数字签名算法。有效的数字签名使接收者有理由相信该消息是由已知的发送者创建的,以便发送者无法否认消息已发送(身份验证和不可否认性)并且消息在传输过程中未发生更改。 ECDSA签名算法是ECC和DSA的结合。整个签名p过程与DSA类似。不同的是,签名时使用的算法是ECC,最终签名的值也分为r和s。主要用于身份认证阶段。

ECDH:也是基于ECC算法的哈夫曼树密钥。通过ECDH,双方可以协商出一个共享秘密,而无需共享任何秘密,而这个共享秘密密钥是当前通信临时随机生成的,一旦通信中断,该秘密密钥就会消失。主要用在握手协商阶段。

ECIES:是一种集成加密方案,也称为混合加密方案,它提供针对选定明文和选定密文攻击的语义安全性。 ECIES可以使用不同类型的函数:密钥协商函数(KA)、密钥导出函数(KDF)、对称加密方案(ENC)、散列函数(HASH)、H-MAC函数(MAC)。

ECC是一种椭圆加密算法,主要描述了椭圆上的公钥和私钥是如何生成的,并且是不可逆的。 ECDSA主要使用ECC算法进行签名,而ECDH则使用ECC算法生成对称密钥。以上三种都是ECC加密算法的应用。在现实场景中,我们经常使用混合加密(对称加密、非对称加密、签名技术等的组合)。 ECIES 是底层 ECC 算法提供的一套集成(混合)加密解决方案。这包括非对称加密、对称加密和签名函数。

<meta charset="utf-8">

这个前提是保证曲线不包含奇异值点。

因此,随着曲线参数a和b不断变化,曲线也呈现出不同的形状。例如:

所有非对称加密的基本原理基本上都是基于一个公式K = k G。m,K代表公钥,k代表私钥,G代表选定的基点。非对称加密算法是为了保证公式不能倒置(也就是说G/K无法计算)。 *

ECC如何计算公钥和私钥?这里我按照我自己的理解来描述一下。

我理解ECC的核心思想就是在曲线上选取一个基点G,然后在ECC曲线上随机选取一个点k(作为私钥),然后计算我们的公钥并保证公钥K也在曲线上。 *

那么如何计算k G呢?如何计算k G 才能保证最终结果不可逆?这就是ECC算法要解决的问题。

首先,我们随机选择一条ECC曲线,a = -3,b = 7,得到如下曲线:

在这条曲线上,我随机选择了两个点。如何计算点的乘积?我们可以把问题简单化。乘数阳离子可用加法表示,如2 2 = 2+2、3 5 = 5+5+5。那么只要我们能够在曲线上计算加法,理论上我们就可以计算乘法。因此,这条曲线只要能进行加法计算,理论上就可以计算出乘法,理论上就可以计算出k*G等表达式的值。

如何计算曲线上两点的相加?这里,为了保证不可逆性,ECC在曲线上定制了加法系统。

现实中,1+1=2、2+2=4,但在ECC算法中,我们理解的加法系统是不可能的。因此,需要定制一套适合该曲线的添加系统。

ECC的定义是在图中随机找到一条直线与ECC曲线相交于三个点(也可能是两个点)。这三个点分别是P、Q、R。

那么P+Q+R = 0。其中0不是co上的0点纵坐标轴,而是ECC中的无穷远点。换句话说,无穷远点被定义为点0。

同理,我们可以得到P+Q = -R。由于R和-R关于X轴对称,我们可以在曲线上找到它们的坐标。

P+R+Q = 0,所以P+R = -Q,如上图所示。

上面描述了ECC曲线世界中如何进行加法运算。

从上图可以看出,直线和曲线只有两个交点,也就是说直线就是曲线的切线。此时,P和R重合。

即P = R。根据上述ECC加法系统,P+R+Q = 0,我们可以得到P+R+Q = 2P+Q = 2R+Q=0

所以我们得到2 P = -Q(是不是和我们非对称算法的公式K一致?= k G 越来越接近了)。

所以我们得出结论,乘法是可以计算的,但是只能在切点处计算,而且不能仅需通过2计算即可。

如果2可以变成任意数相乘,则说明可以在ECC曲线中进行相乘,则ECC算法可以满足非对称加密算法的要求。

那么我们可以计算任意随机数的乘法吗?答案是肯定的。即点积计算方法。

选择一个随机数k,那么k * P 等于多少?

我们知道,在计算机世界中,一切都是二进制的。由于ECC可以计算2的乘法,因此我们可以将随机数k描述为二进制,然后进行计算。假设k = 151 = 10010111

由于2 P = -Q,所以计算出k P 。这就是点积算法。因此,在ECC曲线体系下可以计算乘法,因此这种非对称加密方法是可行的。

至于为什么这个计算是不可逆的。这需要很多推论,我也看不懂。但我认为可以这么理解:

我们的手表通常都有时标。现在如果我们以1990年1月1日的0:00:00为起点,如果我们告诉你到这个起点已经过去了一整年,那么我们就可以计算出当前的时间,也就是我们可以计算出来在手表上。时针、分针和秒针应指向 00:00:00。但反过来说,我说手表上的时针、分针、秒针现在都指向00:00:00。你能告诉我从起点到现在已经过去了多少年吗?

ECDSA签名算法与其他DSA和RSA基本类似,都是采用私钥签名和公钥验证。只不过算法系统采用了ECC算法。交互双方必须采用同一套参数系统。签名原理如下:

选择曲线上的无穷大点作为基点G=(x,y)。随机选取曲线上的一个点k作为私钥,K = k*G 计算p公共密钥。

签名过程:

生成随机数R并计算RG。

根据随机数R,得到消息MASH值H的H,以及私钥k,计算签名S = (H+kx)/R。

发送消息M、RG、S给接收者。

签名验证过程:

接收消息M、RG、S

根据消息计算HASH值H

根据发送方对于公钥K,计算HG/S + xK/S,并将计算结果与RG进行比较。如果相等则验证成功。

公式推论:

HG/S + xK/S = HG/S + x(kG)/S = (H+xk)/GS = RG

< p> 在介绍原理之前,说明一下ECC满足结合律和交换律,即A+B+C = A+C+B = (A+C)+B。

这里有一个 WIKI 上的例子来说明如何生成共享密钥。您还可以参考爱丽丝和鲍勃的例子。

为了让 Alice 和 Bob 进行通信,双方都参与es必须具有ECC基于相同参数系统生成的公钥和私钥。所以ECC有一个共同的基点G。

密钥生成阶段:

Alice使用公钥算法KA = ka * G,生成公钥KA和私钥ka,并将公钥KA公开。

Bob使用公钥算法KB = kb * G,生成公钥KB和私钥kb,并将公钥KB公开。

计算ECDH阶段:

Alice使用计算公式Q = ka * KB计算密钥Q。

Bob使用计算公式Q' = kb * KA 计算密钥 Q'。

共享密钥验证:

Q = ka KB = ka * kb * G = ka * G * kb = KA * kb = kb * KA = Q'

因此,双方计算出的共享密钥无需公开即可使用 Q 进行加密。我们称 Q 为共享密钥。

在以太坊中,ECIEC e 的其他内容使用的ncryption套件:

1. HASH算法采用最安全的SHA3算法Keccak。

2、签名算法采用ECDSA

3、认证方式采用H-MAC

4、ECC参数体系采用secp256k1,其他参数体系可找到这里

H-MAC的整个过程称为基于哈希的消息认证码。其模型如下:

在以太坊的UDP通信中(与RPC通信加密方式不同),采用了上述实现方法并进行了扩展。

首先,以太坊的UDP通信的结构如下:

其中,sig是私钥加密后的签名信息。 mac可以理解为整个消息的总结,ptype是消息的事件类型,data是RLP编码后的传输数据。

UDP的整个加密、认证和签名模型如下:

四你必须了解的,区块链数字签名机制

区块链利用哈希函数实现交易信息和地址信息的不可篡改,保证数据传输过程的完整性。但Hash函数无法实现交易信息的不可否认性(又称不可否认性、不可抵赖性,指网络通信中双方的关系)。在信息交互过程中,必须保证参与者本人及所提供信息的真实身份,即所有参与者均不能否认或否认其真实身份,以及所提供信息和所完成操作及承诺的真实性) 。区块链利用公钥加密技术中的数字签名机制来保证信息的不可否认性。

数字签名主要包括签名算法和验证算法。在签名算法中,签名者使用自己的私钥对电子文件进行签名操作,得到电子文件的签名密文;验证算法中,验证者使用签名者的公钥来验证电子文件的签名密文。运算,并根据验证算法的结果判断签名文件的合法性。签名过程中,只有签名者知道自己的私钥,任何不知道私钥的人都无法伪造或正确签署电子文档;在验证过程中,只有合法签名的电子文件才能有效通过验证,任何非法签名的文件都不满足其验证算法。

常用的数字签名算法有RSA数字签名、DSA数字签名、ECDSA数字签名、Schnorr数字签名等算法。

我们将用RSA数字来介绍它签名:人们可能会问RSA签名和加密有什么区别?加密和签名都是出于安全原因,但略有不同。经常有人问加密和签名到底用私钥还是公钥?其实他们都对加密和签名的作用感到困惑。简单来说,加密是为了防止信息泄露,签名是为了防止信息被篡改。

示例:A收到B发来的消息后,需要回复“收到” - RSA签名过程:

首先:A生成一对密钥(公钥和公钥)私钥),私钥不公开,A 自己保管。公钥是公开的,任何人都可以获取。

然后:A用自己的私钥对消息进行签名,形成签名,并将签名后的消息和消息本身传递给B。

最后:B收到消息后消息,获取A的public验证签名的密钥。如果签名的内容与消息本身一致,则证明该消息是A回复的。

在这个过程中,只有两个传输过程。第一次是A将签名的消息和消息本身传输给B,第二次是B获得A的公钥,即使两者都被敌人击败。如果甲方拦截该消息,则不会有危险,因为只有 A 的私钥可以对该消息进行签名。即使消息内容已知,签名回复也无法伪造给B,从而防止消息内容被篡改。

综上所述,从书本和网络上,我们有了直观的认识。

六区块链如何保证网络中数据的安全?

区块链如何保证网络中数据的安全:
在区块链技术中,数字加密技术是密钥,一般采用非对称加密算法,即也就是说,加密的密码和解锁的密码是不同的。简单来说,我们有一个专属的私钥。只要我们保护好自己的私钥,把公钥给对方,对方就会用公钥加密文件生成密文,然后把密文传给你,我们就用私钥。解密明文可以保证传输内容不被他人看到。这样,加密数据传输就完成了!
同时还有数字签名,为我们增加了一层额外的保护,以证明文档在发送给对方的过程中没有被篡改过。可以看出,区块链的加密技术可以有效解决数据流通和共享过程中的安全问题,可以说潜力巨大。滦河

七区块链中的数据是加密的,其他节点如何加密访问吗?

“龙路网络”很乐意为您解答问题。

首先,区块链技术中的加密是指在传输时使用加密技术对数据进行编译,而不是对显示的数据进行加密,因为区块链还有一个特点就是信息公开透明。区块链上存储的所有交易记录、资产数量等信息均可追溯、查询。在区块链中,每笔完成的交易都会被标识为发起者。原点向周围广播,信息同步到周围节点。这些收到信息的节点会继续向周围的节点广播,并继续向周围的节点发送信息。最终,这些交易信息会传播到全网,实现全网共同记账。

因此,这个数据对所有人可见,但不能被modified,相当于“只读”状态。这是区块链“防篡改”的另一大特点。

区块链使用的是“非对称加密技术”,也就是说加密和解密不使用同一个密钥。通常有两个密钥,称为“公钥”和“私钥”,它们必须配对在一起,否则加密文件无法打开。这里的“公钥”是指可以向外界公开,而“私钥”则不能,只能由持有者知道。它的优越性就在这里,因为对称加密方式如果在网络上传输加密文件,不告诉对方密钥就很难了。无论使用什么方法,都有可能被窃听。非对称加密方式有两个密钥,“公钥”可以公开,不用担心别人知道。接收者在解密时只需要使用自己的私钥,这样就非常好。这避免了密钥传输安全问题。

当您需要使用加密钱包中的数字货币时,通常需要用到私钥。当您想要发起转账交易时,您必须使用自己的私钥对。摘要: 进行非对称加密。公钥和私钥是唯一的对应关系。如果使用公钥来加密数据,则只能使用相应的私钥才能解密。

希望“龙路网络”的回答可以帮助到您。

Ⅷ区块链:防篡改的哈希加密算法

学生A和B在教室里扔一枚硬币,打赌谁来打扫房子。如果头朝上,A就会打扫房子,如果尾巴落地,A就会打扫房子。如果面朝上,则 B 扫掠。这个策略没有什么问题。

但是,如果场景转移到网络聊天室,A和B也玩抛硬币游戏,B很可能不会同意,因为当A抛硬币时,B不会猜测。

正面或反面,A可以说B猜错了。

如何解决这个问题?先加密抛硬币的结果,然后B猜怎么样?你可以尝试这个方法。

假设任意奇数代表硬币的正面,任意偶数代表硬币的反面。 A 想要一个数字 375,然后将其乘以 258,告诉 B 结果是 96750,并声明 A 想要的 375 就是密钥,他将其妥善保管。
接下来验证结果时,A可以撒谎,声称258是他想要的数字,375是关键,A仍然是无敌的。如果A提前告诉B密钥怎么办? B可以直接计算出原始数,失去保密功能。

这种知道加密方法就知道解密方法的方法显然行不通。有没有办法知道加密方式后仍然无法恢复原始文本?

显然是有的,在加密过程中加入不可逆操作就可以了。 A设计了一种新的加密方法:

假设A想要的数字是375,对其进行加密:

B得到结果120943,但他很难根据120943计算出密钥375
如果B想要验证A是否在说谎:

最后,他可以抛硬币了...

这种丢失部分信息的加密方法称为“单向加密”。也称为哈希算法。

有一个问题:

这是可以的,但是可以通过增加上述算法的难度,使得A很难找到来解决。

根据上面的说法,一个可靠的哈希算法应该满足:

密码学中的哈希函数具有三个重要的性质,即抗碰撞性和原像的不可逆性。 ,问题友好度。

碰撞是指学生A可以提前找出一个奇数和一个偶数,从而使哈希结果一致,这在计算上是不可行的。

首先,如果把大空间桑拿的新闻压缩到一个小空间里,肯定会产生碰撞。假设哈希值的长度固定为256位。如果顺序是1, 2,...2 256 + 1,这2 256 + 1个输入值,一一计算哈希值,一定能找到两个输入值使得hash 值是相同的。

A同学,看到这里,请不要高兴得太早。因为在它属于你之前,你必须有时间弄清楚它。为什么这么说?

根据生日悖论,如果随机选择 2 130 +1 个输入,则有 99.8% 的概率找到至少一对碰撞输入。那么对于哈希值长度为256位的哈希函数,平均需要完成2128次哈希计算才能找到冲突对。如果计算机执行 10,000 次哈希计算每秒,大约需要 10 27 年才能完成 2 128 次哈希计算。

A同学,你别想作弊了,我估计你活不了这么久了。当然,如果计算机计算能力大幅提高,也是有可能的。

那么诚信还有什么其他用途呢?

用于验证信息的完整性,因为如果信息在传输过程中没有被篡改,运行哈希计算得到的哈希值将会与原始哈希值不同。

因此,在区块链中,可以利用哈希函数的抗碰撞性来验证区块和交易的完整性。

因为一个哈希值对应着无数的明文,理论上你不知道它是哪一个。例如,4+5=9和2+7=9的结果是相同的。我知道我输入的结果是9,但是我能知道我输入的数字是多少吗?

如果对消息m进行哈希计算时,随机前缀引入r,基于哈希值H(r||m),很难恢复消息m,这意味着哈希函数值隐藏了消息m。

因此,B同学,不可能根据结果推导出原始数据。这就像大海捞针一样。

问题友好性是指没有方便的方法来生成满足特殊要求的哈希值。这是什么意思?通俗地说,没有捷径,需要一步步摸索。如果需要的哈希结果以几个0开头,那么找到前3位全为0的哈希值和前6位全为0的哈希值所需的哈希计算次数是一定的。数量关系。

这个怎么用呢?在区块链中,它可以用作共识算法中的工作量证明。

主要描述了哈希函数的三个重要属性:抗碰撞性、原像不可恢复性可靠性和问题友好性。

由于这些重要的特性,区块链中区块和交易的完整性验证、共识算法的工作量证明等功能都是使用哈希函数来实现的。

[1]。邹军,张海宁。区块链技术指南[M].北京:机械出版社,2016.11
[2]。张柴,韩峰.区块链从数字货币到信用社会[M].北京:中信出版社,2016.7
[3].张健.区块链定义未来金融经济新格局[M].北京:机械工业出版社,2016.6

博客主人唯心底涂
男,单身,无聊上班族,闲着没事喜欢研究股票,无时无刻分享股票入门基础知识,资深技术宅。
  • 45484 文章总数
  • 3638612访问次数
  • 3131建站天数