文章目录

  • 一、数据链上ID:哈希
    • 哈希算法:
    • 哈希是如何工作的
    • 哈希算法的应用
      • 1、安全加密:
      • 2、 数据校验(用于检验数据的完整性和正确性):
    • 哈希算法在分布式中的应用
      • 1、负载均衡
      • 2、数据分片(下面两个例子讲得通透)
      • 3、分布式存储
  • 二、链上数据的加密基础:公钥
    • 公钥密码体制是什么?
      • 公钥体制:
      • 公钥密码体制的4个组成部分:
      • 公钥密码体制的两个基本模型:
        • 1、加密模型:
        • 2、认证模型:
      • 公钥密码体制的原理
      • 公钥密码举例-RSA算法
        • 依据的原理
        • 安全性
      • 公钥密码举例-椭圆曲线公钥密码
        • 比特币中的椭圆曲线:
          • 加密流程:
  • 三、私钥
    • 介绍和注意
    • 私钥的本质
    • Base58转换私钥
      • 缘由
      • Base58的编码表
      • 举例
    • 私钥和公钥的关系
  • 参考资料:
  • 总结

一、数据链上ID:哈希

哈希算法:

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

哈希是如何工作的

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


不同的区块链使用不同的加密算法,比特币区块链使用的是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是解密算法。

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,所以上述过程获得了对消息来源和数据完整性的认证

公钥密码体制的原理

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

陷门单向函数是满足下列条件的可逆函数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)方程:

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

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

    文章目录 一.数据归属:数字签名 1.数字签名的概念 2.对数字签名的攻击类型 3.基本签名算法 4.消息认证 消息认证码 二.数据防篡改:数字摘要 1.定义 2.原理 哈希函数的特征: 3.数字摘要 ...

  2. 云小课 | 区块链关键技术之一:共识算法

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:区块链是一种去中心 ...

  3. 区块链关键技术研究进展

    摘要 区块链是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储.难以篡改.防止抵赖的记账技术,也称为分布式账本技术.近年来,区块链技术的发展对社会产生了重要的影响.本文介绍近年来 ...

  4. 国内与国外区块链关键技术现状及差异

    国内外区块链发展几乎同时起步,从全球来看,全球区块链发展正从全面否定与全面推崇的感性认识趋于理性认识,国外内都更加专注于探索区块链潜在的应用价值和商业模式.然而,国内外针对区块链技术的发展重点.部署策 ...

  5. GeeK正在探索的也是你需要了解的——区块链关键技术小览

    这些年以来,数字货币的兴起也将区块链技术带到了大家的视野中.相信大家都或多或少的听过比特币,区块链.但是,对于区块链的原理,对于区块链目前所面临的问题,可能知道的人不多.本文,将为你一一解答这些问题. ...

  6. 专家:区块链底层技术创新是关键

    封面图来源 | Pixabay 来源 | 中国证券报·中证网 作者 | 杨洁 浙江大学区块链研究中心常务副主任.浙江省区块链技术研究院院长蔡亮近日接受中国证券报记者专访时表示,当下区块链产业应用领域进 ...

  7. 超详细的【区块链】技术介绍整理(七千余字+九大板块)

    区块链:详细介绍 一.什么是区块链(Blockchain)? 1.定义 2.从不同视角认识区块链 3.用生活中的例子理解区块链 二.区块链的来源 三.区块链的发展阶段 1.酝酿期 2.萌芽期 3.发展 ...

  8. 区块链学习笔记:D02 区块链的技术发展历史和趋势

    对于区块链的技术发展历史,其实在我的印象中也就对比特币有所了解,也听过什么火币之类的玩意,但是具体是什么.怎么运作的就不清楚了... 这次的内容首先是讲解了区块链的技术演进,一张图一目了然,虽然里面涉 ...

  9. 基于区块链交易技术开发的证券

    基于区块链交易技术开发的证券 区块链交易技术在金融市场还不是主流的技术运用,但是加密货币在金融领域的影响力却不可同日而语.虽然目前的加密货币市场低迷,但是区块链技术却在全球各个国家引起了行业的重视. ...

最新文章

  1. hashids php 如何使用,Hashids使用
  2. 哎哟我去!betterzip居然支持这么多压缩格式!
  3. wdcp支持两种安装方式
  4. 苹果cms10自适应模板_哪里有苹果cms10自适应模板?
  5. 决定薪资高低的到底什么?
  6. 实用分享-免费录屏工具(无水印)
  7. jdbc 3种获得mysql插入数据的自增字段值的方法_JDBC 3种获得mysql插入数据的自增字段值的方法...
  8. tf.nn.rnn_cell.DropoutWrapper用法细节案例2
  9. MATLAB常用基本数学函数
  10. iOS NSURLSession 指南
  11. 勤哲excel服务器2017试用
  12. Java基本数据类型取值范围
  13. 计算机发展历程 思维导图
  14. python数列的平方_python数组平方
  15. 南开大学教授“段子手式”简介,网友:笑着笑着突然“破防”了!
  16. 果然是WIFI引起局域网速度慢
  17. 海康摄像头二次开发python_海康摄像头的二次开发(java)
  18. 【Medical physics】CT的空间和密度分辨率
  19. RISC-V 实现整数运算指令(Part 1)
  20. 谷歌(Google)的新魔法——云计算

热门文章

  1. SWFObject参数,SWFObject使用方法
  2. Python 乱码原理及其解决办法
  3. Trinity的安装与使用
  4. RS485调试的几个要点
  5. freemarker macro宏定义
  6. 什么是API?有什么作用吗?
  7. 中国人的数学为什么好,为什么不好
  8. 淘宝传奇工程师多隆的程序世界
  9. <MySQL>表中添加和删除字段
  10. 中断机制及ZCU102 DMA中断实例