区块链中的密码学

区块链概念

区块:可以看做是一页一页的账单,上面记录若干条数据

区块链:可以看做是账本,里面按照时间顺序将若干个账单 每个区块中包含两个最重要的值,自己的hash值,和上一个区块的hash值

详解:

区块链是一串使用密码学方法相关联产生的数据块,每一个区块中包含上一个区块的hash值,用于验证其信息的有效性(防伪)和生成下一个区块

Hash算法

Hash算法:可以将任意数据 生成 固定长度的16进制字符串

常见算法:md5 , sha1 , sha256 , sha512等,都是摘要算法

密码学

一.对称加密:

使用 同一个密匙 进行加密和解密,这种加密方法称为 对称加密 也成为单密匙加密

算法:DES , 3DES , AES , TDEA , Blowfish , RC2 , RC4 , RC5 , IDEA , SKIPJACK

1.特点:

a.加解密使用相同的密匙

b.高效,使用于大量数据的加密场景

c.算法公开,安全性取决于密匙大小,但密匙越大效率越低,需要权衡在安全和效率中做权衡

2.缺点

算法本身安全,但使用场景不够安全,因为解密和加密都是使用同一个密匙

二.非对称加密

使用 匹配的一对密匙来分别进行加密和解密,这两个密匙是公开密匙(公钥)和私有密匙(私钥)

算法:RSA、ECC、Elgamal、背包算法、Rabin、D-H 等

非对称加密使用方法

  1. 生成一对匹配的 私钥 和 公钥 (ps:公钥其实是根据私钥生成的)
  2. 将公钥公布给外界

用法1. 公钥加密 - 用来针对互联网上加密数据传递

将自己的公钥公布给外界,然后拿到公钥的人必须使用对应私钥来解密

注意:公钥加密的数据只能对应的私钥解密,同理,私钥加密的数据只能用对应的公钥解密

 

 

用法2. 私钥签名 - 目的是为了将明文公布给别人,同时证明是自己发的

 

用自己的私钥对明文进行hash值,对hash进行加密,连同明文一同发送给指定的人,

该人使用我的私钥进行解密,解密后的明文hash值和接受到的明文的hash值进行对比,如果是一样的,就能证明密文是 发的

特点:

安全性高

加解密复杂,效率低

小结

~对称加密 加密与解密 使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。

~ ~ 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。

~ ~ ~ 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密协商,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通

原文地址:https://www.cnblogs.com/mlw1814011067/p/9571469.html

时间: 2024-11-05 22:42:09

区块链中的密码学的相关文章

区块链中的密码学(三)-椭圆曲线加密算法分析

在目前密码学的非对称加密算法中,RSA算法依然是一种主流,但是随着比特币中对于一种之前不太流行的算法:椭圆加密算法(ECC)的成功应用后,这种算法得到了很大的关注和普及.有一种说法是中本聪不信任RSA算法,认为美国人在其中留有后门,而据斯诺登的爆料也确实如此.相较RSA,ECC不仅在某种程度上杜绝所谓留有后门的情况,而且加密性能/安全性都有提高.本文就带大家一窥ECC算法的天地. 鉴于ECC算法对数学知识要求比较高,不像RSA依赖于中学数学的水平,ECC用到了许多<近世代数基础>,<初等

1.3.2 区块链中的密码学——Merkle 树

在计算机领域,Merkle树大多用来进行完整性验证处理.在处理完整性验证的应用场景中,特别是在分布式环境下进行这样的验证时,Merkle树会大大减少数据的传输量以及计算的复杂度. Merkle哈希树是一类基于哈希值的二叉树或多叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值是将该节点的所有子节点的组合结果的哈希值. 如下图所示为一个Merkle哈希树,节点A的值必须通过节点C.D上的值计算而得到.叶子节点C.D分别存储数据块001和002的哈希值,而非叶子节点A存储的是其子节点C.

1.3.2 区块链中的密码学——椭圆曲线密码算法(ECC)

今天在学椭圆曲线密码(Elliptic Curve Cryptography,ECC)算法,自己手里缺少介绍该算法的专业书籍,故在网上查了很多博文与书籍,但是大多数博客写的真的是...你懂的...真不愧是 '天下文章一大抄' 啊! 雷同不说,关键是介绍的都不是很清楚,是我在阅读过程中.产生的很多疑问无法解决!例如:只来句'P+Q=R',但是为什么等于呢?是根据什么计算出来的呢? 后来查了好久,才发现:这是规定的.是定义!瞬间很是无语! 好了,不吐槽了,为了方便大家对椭圆曲线密码算法有系统的了解,

区块链中的密码学之数字证书体系(十四)

1. 前言 数字证书用来证明某个公钥是谁的,并且内容是正确的. 对于非对称加密算法和数字签名来说,很重要的一点就是公钥的分发.一旦公钥被人替换( 典型的如中间人攻击) ,则整个安全体系将被破坏掉. 怎么确保一个公钥确实是某个人的原始公钥?这就需要数字证书机制. 顾名思义,数字证书就是像一个证书一样,证明信息的合法性.由证书认证机构( Certification Authority,CA) 来签发,权威的 CA 包括 verisign 等. 数字证书内容可能包括版本.序列号.签名算法类型.签发者信

区块链中的密码学之默克尔树(十五)

目录 1. 前言 2. 默克尔树 3. 布隆过滤器 什么情况下需要布隆过滤器? 常规思路 布隆过滤器介绍 布隆过滤器原理 布隆过滤器添加元素 布隆过滤器查询元素 4. 同态加密 4.1 概览:同态加密的概念 4.2 同态加密的定义.安全性和简单实例 5. 零知识证明 零知识证明的提出 零知识证明的形式化定义 零知识证明满足的性质 基本的零知识协议 非交互式零知识证明 零知识证明的应用 1. 前言 2. 默克尔树 默克尔树( 又叫哈希树) 是一种二叉树,由一个根节点.一组中间节点和一组叶节点组成.

区块链中的密码学之数字签名方案(十二)

1. 前言 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性( integrity)和来源( 或不可抵赖,non-repudiation). 一个典型的场景是,A 要发给 B 一个文件( 一份信息) ,B 如何获知所得到的文件即为 A 发出的原始版本?A 先对文件进行摘要,然后用自己的私钥进行加密,将文件和加密串都发给B.B 收到文件和加密串后,用 A 的公钥来解密加密串,得到原始的数字摘要,跟对文件进行摘要后的结果进行比对.如果一致,说明该文件确实是 A 发过来的,并且文件

1.3.1 区块链中的加密算法——Hash算法(更新)

为了为保证存储于区块链中的信息的安全与完整,区块链中使用了包含密码哈希函数和椭圆曲线公钥密码技术在内的大量的现代密码学技术,同时,这些密码学技术也被用于设计基于工作量证明的共识算法并识别用户. 在前边的文章中已经系统的讲述了密码学中的哈希算法,在本节,将会给大家介绍Hash算法在区块链中的应用! 概念回顾: 哈希函数:是一类数学函数,可以在有限合理的时间内,将任意长度的消息压缩为固定长度的二进制串,其输出值称为哈希值,也称为散列值. 以哈希函数为基础构造的哈希算法,在现代密码学中扮演着重要的角色

Java 实现区块链中的区块,BLOCK的实现

1.区块是区块链的基础单元 区块链由若干个区块组成,区块是区块链的基础单元 2.区块链中区块的基本属性 区块6个属性的说明-Index 区块的索引值,区块链中的唯一键区块6个属性的说明-Timestamp 区块的时间戳,用于区分区块的产生时间区块6个属性的说明-Hash 区块的hash值是整个区块各个内容整体计算出的hash值区块6个属性的说明-Previous Hash 前一个区块的hash值区块6个属性的说明-Data 区块链的数据存储部分,例如比特币是用来存储交易数据区块6个属性的说明-N

区块链中的节点是什么

随着区块链科技的进步,各种形态不同的链展现在大家面前,有些区块链中节点有很多(如以太坊),而有些区块链中的节点又很少(如EOS),今天我们拿第一代区块链比特币来讲. 比特币被设计为一种去中心化的点对点(P2P)网络 如中心化的应用都是由一台服务器集中管理,而去中心化的应用就是由很多台服务器管理存储信息,并且相互验证. 综上所诉的去中心应用中的服务器就是节点 节点的作用 为了确认交易有效性,比特币需要多于一个单独网络的矿工处理交易单,它必须通过"节点"向网络广播.这是交易处理过程的第一步