0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

区块链中加密学算法学习

lviY_AI_shequ 来源:未知 作者:李倩 2018-04-27 16:04 次阅读

区块链中使用了很多加密学算法,包括哈希算法、默克树、数字签名等。在这一节将逐个学习这些知识。

哈希算法

哈希算法是一种常见的单向加密算法,它将一串数据加密生成一串二进制,但不能由二进制还原为原来的数据。该算法有一下特点:

相同的输入得到相同的二进制串

不同对输入得到不同的二进制串,即有强对抗性,不同的数据不会产生相同的哈希值

输出的二进制长度是一致的

import hashlibdata1 = "Test1"msg = hashlib.sha256()msg.update(data1.encode("utf-8"))output1 = msg.hexdigest()print(output1)

# 再次计算msg = hashlib.sha256()msg.update(data1.encode("utf-8"))output2 = msg.hexdigest()print(output1 == output2)

True

# 使用不同的数据data2 = "Test2"msg = hashlib.sha256()msg.update(data2.encode("utf-8"))output3 = msg.hexdigest()print(output3)print(output3 == output1)

32e6e1e134f9cc8f14b05925667c118d19244aebce442d6fecd2ac38cdc97649False

print(len(output1))print(len(output3))

6464

长度都为64,即256长度的比特位

在区块链中很多地方用了哈希算法,比如对区块计算哈希值。在“区块链基础”部分中实现了一个简化版的区块链。在实际区块链中区块包含元数据的区块头和紧跟其后的构成区块主体的一长串交易,结构如下:

大小字段描述4字节区块大小用字节表示的该字段之后的区块大小80字节区块头组成区块头的几个字段1-9(可变整数)交易计数器交易的数量可变的交易记录在区块里的交易信息

其中哈希值和nonce等都放在区块头中,其结构如下:

大小字段描述4字节版本版本号,用于跟踪软件/协议的更新32字节父区块哈希值引用区块链中父区块的哈希值32字节Merkle根该区块中交易的merkle树根的哈希值4字节时间戳该区块产生的近似时间(精确到秒的Unix时间戳)4字节难度目标该区块工作量证明算法的难度目标4字节Nonce用于工作量证明算法的计数器

这里涉及到另一个概念——默克(Merkle)树

默克树

默克尔树,又叫哈希树,是一种树的数据结构,由一个根节点、一组中间节点和一组叶节点组成。最下面的叶节点包含存储数据或其哈希值,其上的节点是它的子节点内容的哈希值。一个默克树的生成过程如下:

1.由数据生成一系列哈希值

2.从上述哈希值再生成哈希值

3.然后再生成根节点

默克树有如下特点:

一般是二叉树,也可以多叉树,具有树结构的所有特点;

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

当两个默克尔树根节点相同时,则意味着所代表的数据必然相同,用根节点校验可以大大减少数据的传输量以及计算的复杂度;

默克树的一个分支也是默克树,可以作为独立进行校验;

当区块链中的交易数据过多时,可以通过只保留默克树的根节点,删除其下的节点有效的节约存储空间。

数字签名

在区块链中还有一个重要的技术,那就是数字签名。类似在手写签名来确认直至内容,数字签名用于证实某数字内容的完整性和来源,保证签名的有效性和不可抵赖性。数字签名使用了公钥密码学。公钥密码学是非对称加密技术,其相对于对称加密技术。在对称加密技术中加密使用相同的密钥加解密数据,为了让对方能够解密,需要同时将密文和密钥发给对方。

如果有人在传输过程中截取了密文和密钥,就一样能解密出明文,这就导致了安全性问题。

在非对称加密中有公钥和私钥两个,公钥用来加密,私钥用来解密,公钥可以发给任意的人。

在这个过程中只有私钥才可以解密,而加密用的是公钥,故不需要传输私钥,只要保证私钥放在安全的地方,被盗取后其他人还是无法破解密文。

而数字签名就是基于上述非对称加密技术,不同点在于数字签名使用私钥生成一个签名,接收方使用公钥进行校验。比如上面用私钥解密得到明文后,用私钥进行签名进行回复,收到回复后用公钥解密得到的内容与数据相同即可证明签名正确。

因为公钥和私钥是成对的,唯一对应的,私钥只有对方拥有,所以对方也不能对签名进行抵赖。

在区块链技术中常见的签名算法是椭圆签名算法。其算法用对椭圆曲线上的点进行加法或乘法运算来表达。区块链中私钥是一个随机数,通过椭圆曲线签名算法生成公钥。但反向从公钥计算出私钥几乎是不可能的。椭圆曲线签名算法还具有安全性高和存储空间占用小的特点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 二进制
    +关注

    关注

    2

    文章

    704

    浏览量

    41245
  • 区块链
    +关注

    关注

    110

    文章

    15554

    浏览量

    104745
  • 哈希算法
    +关注

    关注

    1

    文章

    56

    浏览量

    10688

原文标题:从零开始学区块链(4)--深入浅出区块链(五)-加密学

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    区块如何改变AI

    相比,区块使操作更安全,更快速,更透明。区块已经给金融领域带来了很大的影响,像比特币,以太坊和莱特币这样的加密货币已经成为当前的关注点。
    发表于 02-27 14:01

    什么是区块 区块有什么用

    与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。 简单地说,区块
    发表于 03-26 11:31

    SHA在区块中的应用

    `最近几年比特币的火爆带动了人们对区块技术的研究。当然我们在这里并不讨论区块技术本身,而是讨论一下区块
    发表于 03-30 22:20

    区块行业发展,金融领域应用方向?

    生产生活方式的改进,将成为驱动区块行业发展的动力源泉。区块技术发展至今已引起很多人关注,但区块
    发表于 08-06 17:34

    区块将改革供应

    保证。1) 用户身份数据上:用户将自己的数据加密上传到区块上,通过索引进行查看2) 唯一数据私钥:用户将自己的数据加密上传到
    发表于 08-08 11:11

    首个全行业生态区块项目,黄金链(GBK)即将上线

    存储、不可篡改、点对点传输、共识机制、加密算法等综合体,其最大的特点是去中心化维护一个公认信息而爆红。对于区块这项颠覆性技术而言,今年年初各路区块
    发表于 08-17 16:48

    区块不止是炒币

    `<span style="" >我们大家都知道比特币是基于区块技术所诞生的加密数字货币,也正是由于比特币的诞生大家才逐渐了解但区块
    发表于 12-04 13:48

    区块+教育,是改革的良性循环?

    学习证书平台。证书颁发的工作原理如下:首先,使用区块和强加密的方式,创建一个可以控制完整成就和成绩记录的认证基础设施,包含证书基本信息的数字文件,如收件人姓名、发行方名字、发行日期
    发表于 12-20 17:36

    区块应用涉及到哪些算法

    区块技术的应用涉及到哪些算法模型?
    发表于 03-27 11:21

    区块对我们的生活有什么影响

    今天的信息图表从HIVE区块技术向我们展示,它让我们得以一窥区块技术在金融世界之外的潜力。区块
    发表于 07-10 04:20

    贪心算法学习

    算法学习之路——贪心
    发表于 09-04 07:17

    模拟退火的算法学习

    模拟退火算法学习
    发表于 06-16 11:02

    区块分成两部分, 一个是区块,一个是

    按照时间顺序串联起来的事件,它使用协议规定的密码机制进行了认证,保证不会被篡改和伪造。1.区块结构区块是使用密码方法产生的数据块,数据以电子记录的形式被永久储存下来,存放这些电子记
    发表于 03-20 08:55

    什么是区块区块都有哪些应用?

    什么是区块区块未来的应用前景怎样?
    发表于 06-28 09:20

    有感FOC算法学习与实现总结

    原文:https://blog.csdn.net/u010632165/article/details/103656254文章目录基于STM32的有感FOC算法学习与实现总结1 前言2 FOC算法
    发表于 07-05 06:45