区块链关键技术1(笔记)

这篇具有很好参考价值的文章主要介绍了区块链关键技术1(笔记)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、数据链上ID:哈希

哈希算法:

一种只能加密,不能解密的密码学算法。特点:
1、可以将任意长的信息转换成一段固定长度的字符串,这些字符串就算输入值只改变一点,输出的哈希值也是天差地别。
2、只有完全一样的输入值,才有完全一样的输出值。
3、输入值和输出值之间没有规律,不能通过输出值找到输入值,要想找到输入值,只能通过枚举法,寻找满足条件的输出值。

哈希是如何工作的

哈希值指针将每个区块连接到它的前身,方法是在前一个区块中持有数据的哈希值。因为每个块都会链接到它的前身,所以区块链中的数据是不可变的。哈希函数意味着任何事务的变更都会产生完全不同的哈希值,这将改变所有后续块的哈希值。

区块链关键技术1(笔记)
不同的区块链使用不同的加密算法,比特币区块链使用的是SHA256算法,该算法生成一个32个字节的哈希值。Dogecoin和Litecoin则采用了Scrypt算法,一种更快、更轻的算法。

哈希算法的应用

1、安全加密:

1、MD5(Message-Digest Algorithm,MD5消息摘要算法)是Rivest于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。

比如:
比如从图片二进制串码开头取100个字节,中间100字节,最好100字节,然后将300个字节放到一块通过哈希算法得到一个哈希字符串作为图片的唯一标识。再想提高效率,还可以再与图片的路径进行运算进一步得到hash值。

2、SHA1及其他(Secure Hash Algorithm.安全散列算法)是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。
3、DES(Data Encryption Standard,数据加密标准)
4、AES(Advanced Encryption Standard,高级加密标准)

2、 数据校验(用于检验数据的完整性和正确性):

BT 下载的原理是基于P2P 协议的。多个机器上并行下载一个2GB 的电影,这个电影文件可能会被分割成很多文件块。等所有的文件块都下载完成之后,再组装成一个完整的电影文件就行了。但这样容易造成数据串改,可以通过哈希算法,对100 个文件块分别取哈希值,然后对下载好的文件块逐一求哈希值,然后跟种子文件中保存的哈希值比对。如果不同,说明文件块不完整

####3、 散列函数
散列函数对于散列算法冲突的的要求要低很多。即使出现冲突,通过开放寻址法或链表法解决,关注的是能否均匀分布。

哈希算法在分布式中的应用

1、负载均衡

负载均衡的算法有很多,比如轮询,随机,加权轮询等。如何实现一个会话粘滞的负载均衡算法呢?也就是说需要在同一客户端,在一次会话中的所有请求都路由到同一个服务器上。

一般的解决方法是:
维护一张映射表,表的内容是客户端的IP地址或者会话ID与服务器编号的映射关系。客户端每一次请求都要先在映射表中查找路由到的服务器编号。然后再请求编号对应的服务器。
缺点:
1、如果客户端很多就需要维护更多的映射关系
2、客户端上线下线,服务器扩容,缩容都会导致映射失败,维护映射表成本大

但是通过哈希算法就可以解决:
通过哈希算法对客户端IP地址或者会话ID计算哈希值,然后与服务器的大小进行取模运算。最终得到的值就是对应的服务器编号。这样就可以把同一个IP的请求路由到同一个后端服务器上

2、数据分片(下面两个例子讲得通透)

1、如何统计‘搜索关键词’的出现次数?假如有1T的日志文件,记录了用户的搜索关键词,如何快速统计每个关键词被搜索的此说呢?难点:数据量太大,无法放在一台机器的内存中,如果只有一台机器处理,时间会很长因此我们用n台机器并行处理。从搜素记录中依次读取关键词,通过哈希函数计算出哈希值然后跟n取模运算,最终得到的值,就是被分配到的机器号这样相同的关键词就被分散到同一机器。每个机器分别计算关键词出现的次数,最后合并就是最终的结果。
2、如何快速判断图片是否在图库中?假如有一亿张图片,显然在一台机器构建散列表是行不通的,因为一台机器的内存有限我们需要n台机器,用哈希算法取每张图片的唯一标识,在和n求余取模运算,得到的就是要分到的机器号,然后把唯一标识和路径发往这台机器构建散列表。当我们查找一个图片时,就用同样的哈希算法得到哈希值和n取模运算,假如得到的是k,就去k这台机器寻找针对海量的数据,可以用多机分布式处理。借用这中分片的思想,可以突破单机内存,和CPU的限制

3、分布式存储

面对海量的数据和海量的用户,为了提高数据的读取和写入能力,一般都采用分布式来存储数组,比如分布式缓存。海量的数据需要缓存,一个缓存机器肯定是不够的,所以需要将数据分布在多台机器.借用数据分片的思想,通过哈希算法对数据取哈希值,然后对机器个数取模,这个最终值就是存储的缓存机编号。
问题
在机器数进行扩容的时候,比如13这个数组,存储在编号为3机器上。但是新增一个机器,对数据按照11取模,原来这个数据就被分配到2号机器上了。因此,所以数据都要重新计算哈希值,然后搬移到正确的机器上。缓存中的数据全部失效。所有的数据请求都会穿透缓存,直接取请求数据库。这样就可能发送雪崩效应,压垮数据库。

这时,需要一种方法,使得新加入一个机器后,并不需要做大量的数据搬移。那就是在分布式系统中应用非常广泛的一致性哈希算法

基本思想:

我们假设有k个机器,数据的哈希值范围是[0-MAX],我们将整个范围划分成m个小区间(m远大于k),每个机器复负责m/k个小区间。当有新机器加入的时候,我们就将某几个小区间的数据,从原来的机器中搬移到新的机器中。这样,既不用全部重新哈希、搬移数据,也保持了各个机器上数据量的均衡。

二、链上数据的加密基础:公钥

公钥密码体制是什么?

公钥密码学与其他密码学完全不同:

1、公钥算法基于数学函数而不是基于替换和置换
2、使用两个独立的密钥

公钥密码学的提出是为了解决两个问题:

1、密钥的分配
2、数字签名

1976年Diffie和Hellman首次公开提出了公钥密码学的概念,被认为是一个惊人的成就。

公钥体制:

每个用户都有一对选定的密钥(公钥k1;私钥k2),公开的密钥k1可以像电话号码一样进行注册公布。
特点:

1、加密和解密能力分开
2、多个用户加密的消息只能由一个用户解读,(用于公共网络中实现保密通信)
3、只能由一个用户加密消息而使多个用户可以解读(可用于认证系统中对消息进行数字签字)。
4、无需事先分配密钥

公钥密码体制的4个组成部分:

1、明文:算法的输入,它们是可读信息或数据,用M表示;
2、密文:算法的输出。依赖于明文和密钥,对给定的消息,不同的密钥产生密文不同。用E表示;
3、公钥和私钥:算法的输入。这对密钥中一个用于加密,为Ke,此密钥公开;一个用于解密,为Kd,此密钥保密。加密算法执行的变换依赖于密钥;
4、加密、解密算法

公钥密码体制的两个基本模型:

1、加密模型:

如图所示,接收者B产生一对密钥PKB和SKB,其中PKB是公钥,将其公开,SKB是私钥,将其保密。如果A要向B发送消息m,A首先用B的公钥PKB加密m,表示为c =E (PKB, m),其中c是密文,E是加密算法,然后发送密文c给B。B收到密文c后,利用自己的私钥SKB解密,表示为m =D (SKB, c),其中D是解密算法。
区块链关键技术1(笔记)

2、认证模型:

如图所示,A首先用自己的私钥SKA对消息m加密,表示为c=E (SKA, m),然后发送c给B。B收到密文c后,利用A的公钥PKA对c解密,表示为m=D (PKA, c)。由于是用A的私钥对消息加密,只有A才能做到,c就可以看做是A对m的数字签名。此外,没有A的私钥,任何人都不能篡改m,所以上述过程获得了对消息来源和数据完整性的认证
区块链关键技术1(笔记)

公钥密码体制的原理

公钥密码体制的基本原理是陷门单向函数:
解释:

陷门单向函数是满足下列条件的可逆函数f:
①对于任意的x,计算y = f (x)是容易的。
②对于任意的y,计算x使得y = f (x)是困难的。
③存在陷门t,已知t时,对于任意的y,计算x使得y = f (x)则是容易的。

公钥密码举例-RSA算法

RSA算法是罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)于1977年研制并于1978年首次发表的一种算法。是第一个既能用于数据加密,也能用于数字签名的公开密钥密码算法

依据的原理

寻求两个大素数的乘积比较简单,而将它们的乘积分解开(因式分解)则极其困难。73×107=13911391可以分解成哪两个素数的积?

安全性

1、穷举攻击RSA抗穷举攻击的方法也是使用大的密钥空间,这样看来是e和d的位数越大越好。但是由于在密钥生成和加密/解密过程都包含了复杂的计算,故密钥越大,系统运行速度越慢。
2、计时攻击计时攻击是通过记录计算机解密消息所用的时间来确定私钥。这种攻击不仅可以用于攻击RSA,还可以用于攻击其他的公钥密码系统。

公钥密码举例-椭圆曲线公钥密码

椭圆曲线并非椭圆,之所以称为椭圆曲线是因为它的曲线方程与计算椭圆周长的方程相似。一般的,椭圆曲线指的是由维尔斯特拉斯(Weierstrass)方程:𝑦2+𝑎𝑥𝑦+𝑏𝑦=𝑥3+𝑐𝑥2+𝑑𝑥+𝑒
上述曲线方程可以通过坐标变换转化为下述形式:𝑦2=𝑥3+𝑎𝑥+𝑏。

比特币中的椭圆曲线:

比特币公钥加密中使用的椭圆曲线参数是依照secp256k1标准。在比特币流行之前很少有人使用过secp256k1,但现在由于它的几个不错的属性越来越受到欢迎。secp256k1标准通过特别的算法,使得生成的曲线比别的曲线快30%.比特币的椭圆曲线图如下:

区块链关键技术1(笔记)

加密流程:

以一个随机生成的私钥k为起点,我们将其与曲线上预定的生成点G相乘以获得曲线上的另一点,也就是相应的公钥K。生成点是secp256k1标准的一部分,比特币密钥的生成点都是相同的:{K = k * G}。

小测:
1、公钥属于哪种加密方式?

非对称加密

2、下面不是使用公钥的优点的是?

A、安全性更高
B、完整性更好
C、速度更快
D、防修改性更好
答案为:C

三、私钥

介绍和注意

一个私钥就是一串随机提取的数字,拥有和控制私钥是用户控制自己的数字资产的关键,用户交易时想证明使用的资金是自己的,必须使用其私钥对交易进行签名。

需要注意的是:
1、在任何时候均必须保证私钥的私密性,将私钥透露给第三方,等同于把由它保护的数字资产的控制权交给了第三方。
2、私钥同样要进行备份、保护,防止意外丢失。如果私钥丢失,将是不可恢复的,受它保护的资金也就彻底丢失了。

私钥的本质

1、私钥本质上是32个byte组成的数组,1个byte等于8位二进制,一个二进制只有两种可能:0或1,所以私钥的总数量位2(8*32)=2256个,这个数量已经超过了宇宙中原子的总数,想要遍历所有的私钥,以目前的科学技术水平是不可能成功的。
2、我们所说的比特币私钥的是密码学上面安全的,并不是不可能出现重复的私钥,而是说不可能通过遍历所有的私钥方式,或者其它的方式,找到上面有比特币的私钥,所以私钥是密码学上安全的
3、虽然私钥的总数量很大,但是私钥的生成却是要依赖密码学上的安全随机,密码学上面安全的随机是指随机是不可预测的,随机的结果是不可遍历的。

Base58转换私钥

缘由

32个byte组成的数组是由256个0或者1组成的,如果显示出来,不仅仅是识别率太差,而且太长。因此在比特币中会将私钥使用一种独特的编码方式:Base58进行转换。

Base58的编码表

注意:

私钥的概念在Base58中不使用数字“0”,字母大写“O”,字母大写“I”,小写字母“i”,以及“+”和“/”字符。主要是为了肉眼容易识别,在输入的时候不容易打错。

区块链关键技术1(笔记)

举例

将1234转换位58进制:
1、1234除以58,商21,余数为16,查表得H
2、21除以58,商0,余数为21,查表得N
所以得到Base编码为:HN

如果待转换的数前面有0怎么办?直接附加编码1来代表,有多少个就附加多少个(编码表中1代表0)。

私钥和公钥的关系

公钥是由私钥生成的,通过椭圆曲线生成,一个私钥经过椭圆曲线变换之后会生成一个65个byte的数组。如:04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235
公钥一般是把byte数组是经过hex(16进制)的处理之后显示出来的,私钥和公钥是成对出现的,一个私钥签名的数据,只有对应的公钥才能解开。

参考资料:

知链科技区块链教育

总结

这块内容太多了,分多篇进行分析。欲知后事如何,请听下回分解。哈哈哈!文章来源地址https://www.toymoban.com/news/detail-432397.html

到了这里,关于区块链关键技术1(笔记)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据验证技术:保护区块链系统的关键

    区块链技术作为一种去中心化的分布式账本,具有高度的安全性、可靠性和透明度。然而,区块链系统也面临着诸如51%攻击、双花攻击等严重安全风险。为了保护区块链系统的安全,数据验证技术成为了区块链系统的关键。 数据验证技术是一种在区块链系统中用于验证交易和

    2024年04月28日
    浏览(35)
  • 区块链:解决跨境电商挑战的关键技术

    跨境电商是近年来迅速发展的一个行业,它涉及到不同国家、不同文化背景的买卖交易,面临着诸多挑战。这些挑战包括但不限于: 交易安全性:跨境电商交易量大,涉及金融资金、个人信息等敏感数据,因此安全性是关键。 交易效率:跨境电商涉及多个国家、多种币种、

    2024年04月10日
    浏览(77)
  • 区块链溯源:实现物流效率的关键技术

    物流业务在现代经济中发挥着越来越重要的作用。随着全球化的推进,物流业务的复杂性也不断增加。物流链涉及到的各种节点和参与方,需要实时、准确地传递信息,以确保物流过程的顺利进行。然而,传统的物流管理方式存在诸多问题,如信息不透明、数据不完整、流程

    2024年04月25日
    浏览(41)
  • 国内外区块链关键技术现状及差异

    一、国内外区块链关键技术现状 1.国内区块链技术现状 随着国内区块链技术的普及和应用,我国的区块链技术已经进入了快速发展阶段。目前,国内的区块链技术可以分为公有链和联盟链两种。公有链旨在通过去中心化的方式实现数字货币和价值传递,代表作品是比特币、以

    2024年02月08日
    浏览(51)
  • 区块链技术|DApp与传统应用程序的关键区别

    在数字时代,应用程序已经成为我们生活的一部分,无论是社交媒体、金融服务还是娱乐媒体,应用程序几乎无处不在。然而,随着区块链技术的崭露头角,一种新型应用程序——去中心化应用程序(DApp)正在逐渐崭露头角。本文将探讨DApp与传统应用程序(App)之间的关键

    2024年02月10日
    浏览(41)
  • 区块链与电力数据分析:实现智能能源管理的关键技术

    电力数据分析在智能能源管理中起着至关重要的作用。随着电力网络规模的扩大和电力系统的复杂性增加,电力数据分析成为了一种必要的工具,以帮助管理和优化电力系统。然而,传统的电力数据分析方法存在一些局限性,如数据不完整、数据不准确、数据不及时等问题。

    2024年04月13日
    浏览(42)
  • 区块链相关技术、概念以及技术实现过程中的一些关键问题 Smart Contracts and Blockchains

    作者:禅与计算机程序设计艺术 2017年底,区块链已经成为众多投资人和技术人员最关注的话题之一。随着现实世界的不断复杂化、数字货币的流行以及IoT设备的普及,加密数字货币市场正变得越来越活跃。由于区块链具有去中心化、不可篡改、透明性、高并发等特点,使其

    2024年02月09日
    浏览(52)
  • 《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制

    《区块链原理与技术》专业课学习笔记 第一部分 一、概论 1.什么是区块链 2.区块链与比特币的关系 2.1 区块链是比特币的底层技术,是比特币的核心基础与架构 2.2 区块链不止是比特币 3 区块链的特点 3.1去中心化 3.2 透明性 3.3 不可篡改性 3.4 多方共识 4 区块链的分类 二、区

    2024年02月04日
    浏览(49)
  • 阳光能源,创造永远:光模块的未来”:随着大数据、区块链、云计算和5G的发展,光模块成为满足不断增长的数据流量需求的关键技术

    光模块的类型介绍: 为了适应不同的应用需求,不同参数和功能的光模块应运而生。光模块的分类方式及类型详见如下: 🔎封装形式🔍: 📣📢光模块按照封装形式来分有以下几种常见类型:SFP、SFP+、SFP28、QSFP+、QSFP28以及QSFP-DD。 📣📢SFP光模块是GBIC的升级版,最高速率

    2024年04月29日
    浏览(44)
  • 信息技术导论 第七章 区块链 笔记

    7.1.1   区块链基本概念和特征 1、区块链的基本概念 从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可算改、全程留痕、可以追溯,集体维护、

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包