区块链基础知识(上):区块链基本原理、加密哈希、公钥加密

目录

 

基本原理

加密哈希:

公钥加密:

希望有人向你发送只有你才能打开的加密文档/消息时使用 PKC

希望向其他人发送加密文档/消息并证明它确实由你发送时使用 PKC

使用 PKC 和加密哈希对文档/消息进行数字签名

 

交易哈希链使用数字签名转让数字资产所有权;每个交易记录都保留有对哈希链中上一个交易的加密反向链接

Merkle 树:


 

基本原理

区块链的基本原理理解起来并不复杂。首先来看三个基本概念:

  • 交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;

  • 区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识;

  • 链(Chain):由区块按照发生顺序串联而成,是整个账本状态变化的日志记录。

 

b723ab18124644cc9867767a4e4aeecd.png

想象一下你和一群爱借钱的朋友。每个人都有一本账本,上面记录着所有的交易和账户余额。这个账本是分布在每个人手里的副本,而不是交给某个人拿着账本。

每当有人想要进行一次交易,比如转账给其他人一定数量的金币,他们会把这个交易写在自己的账本上,并通知其他人。其他人会验证这个交易是否有效,比如检查发送人是否有足够的金币进行转账。如果交易被验证通过,它就会被添加到每个人的账本上,表示账本的状态发生了变化。

为了确保每个人的账本都保持一致,我们约定一些规则。首先,每个人在记录交易时必须按照相同的顺序进行,就像是按照时间顺序排队一样。其次,每个人会把自己已验证的交易打包成一个“区块”,并把这个区块连接到之前的区块上,形成一个链条。

现在,每个人都有了相同的账本副本,每个区块都记录了之前的区块的信息。这样,任何人都可以通过检查每个区块的信息来验证整个账本的有效性。如果有人试图篡改账本的某个区块,那么所有人都会注意到,因为区块的哈希值会发生变化,从而破坏了整个账本的连续性

这个共享账本游戏的关键在于共识。当有人想要添加一个新的区块时,其他人会一起参与确认这个区块的有效性,并达成共识。只有在达成共识后,新的区块才会被添加到每个人的账本上。

这就是区块链系统的运作原理。通过分布式的账本副本、按照特定的规则记录交易和形成区块链,区块链系统实现了一个安全、透明和去中心化的数据记录方式。

 

加密哈希

加密哈希的作用是创建一个唯一的指纹或标识,用于表示输入数据。无论输入数据有多大或多小,哈希函数都会生成相同长度的哈希值。这意味着即使输入数据发生微小的改变,生成的哈希值也会完全不同。

加密哈希有几个重要的特性。首先,它是单向的,意味着无法从哈希值还原出原始数据。这使得哈希值成为一种安全的方式来存储密码或其他敏感信息,因为即使黑客获得了哈希值,他们也无法轻松地将其转换回原始数据。

其次,加密哈希是不可逆的。这意味着无法通过观察哈希值来推断出输入数据的内容。哈希函数的设计使得即使输入数据发生微小的变化,其生成的哈希值也会有很大的差异。

最后,加密哈希应该是唯一的。这意味着不同的输入数据应该生成不同的哈希值。即使两个输入数据只有一个字节的差异,它们生成的哈希值也应该完全不同。

以下是使用 SHA-256 算法对各种长度的字符串进行哈希处理

7282137055674d2584454c960c2cc2fa.png

有时,哈希值会进行双重哈希处理。也就是说,通过应用第二轮 SHA-256 算法

213a09c7eb8a4d04bf42dd9090c8f91e.png

 

公钥加密:

希望有人向你发送只有你才能打开的加密文档/消息时使用 PKC

首先,我们来看一下公钥和私钥。公钥是可以被分享给其他人的密钥,而私钥是保密的,只有密钥的所有者知道。这两个密钥是通过数学算法生成的,它们之间有一个特殊的关系。

假设Alice想要向你发送一个加密的消息。你首先生成一对公钥和私钥,并将公钥发送给Alice。Alice使用你的公钥来加密她想要发送的消息。

现在,即使消息被加密,只有你拥有与公钥配对的私钥,才能解密消息。这是因为私钥是唯一能够解密使用公钥加密的消息的密钥。

e373c2fdeb5f4970a3e7432ded4055fb.png

希望向其他人发送加密文档/消息并证明它确实由你发送时使用 PKC

当你希望向其他人发送加密文档或消息,并且希望能够证明这些文档或消息确实是由你发送的时候,你可以使用公钥加密和数字签名这两个方法。

使用公钥加密时,你会生成一对密钥:公钥和私钥。你将公钥分享给其他人,而私钥只有你自己能够访问。其他人可以使用你的公钥来加密他们想要发送给你的文档或消息。一旦文档或消息被加密,只有你拥有的私钥才能解密它们,这样确保了只有你能够读取原始内容。

98605af08ddf407e81afdb2f15361e42.png

使用 PKC 和加密哈希对文档/消息进行数字签名

  1. 生成密钥对:首先,你需要生成一对密钥:公钥和私钥。通常,你会使用一个密钥生成算法来生成这对密钥。公钥可以与其他人分享,而私钥必须保持机密,只有你自己能够访问。

  2. 哈希处理:对于要进行数字签名的文档或消息,你需要使用加密哈希算法对其进行哈希处理。加密哈希算法会将文档或消息转换为一个固定长度的哈希值。常用的加密哈希算法包括SHA-256和SHA-512等。

  3. 私钥加密:使用你的私钥对哈希值进行加密。这个加密操作会生成一个数字签名,这个签名是唯一与你的私钥相关联的加密值。

  4. 发送签名和文档/消息:将数字签名和原始文档或消息一起发送给接收方。确保这些信息在传输过程中是安全的,以防止篡改。

  5. 公钥解密:接收方使用你的公钥对数字签名进行解密。解密操作将得到解密后的哈希值。

  6. 哈希验证:接收方使用相同的加密哈希算法对接收到的文档或消息进行哈希处理,得到一个新的哈希值。

  7. 比较哈希值:接收方将解密后的哈希值与新生成的哈希值进行比较。如果两个哈希值匹配,那么说明文档或消息没有被篡改过,并且数字签名有效。
    0f053a3b869941908131a29560b91f46.png

 使用 PKC 和加密哈希验证文档/消息

5298a3bb65be4948af2de4042c5ec32d.png

 

交易哈希链使用数字签名转让数字资产所有权;每个交易记录都保留有对哈希链中上一个交易的加密反向链接

交易哈希链是一种用于转让数字资产所有权的机制,它使用数字签名来验证交易的有效性,同时通过保留对上一个交易的加密反向链接来确保交易记录的完整性。

在交易哈希链中,每个交易都会被记录并与一个唯一的哈希值相关联。这个哈希值是通过对交易的内容进行加密哈希处理而生成的。这样做可以确保交易的完整性,因为即使交易的内容发生微小的更改,哈希值也会发生变化。

d6f5ce19a298473886c4d0b95cfab574.png

Merkle 树

Merkle 树是一种生成 Merkle 根哈希的二叉哈希树;此数据结构可以有效添加叶节点,并计算新 Merkle 根,而无需完全重新计算

aee50ed6b7cb4c2e970f435320dda66e.png

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/456916.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

学生时期学习资源同步-1 第一学期结业考试题1

原创作者:田超凡(程序员田宝宝) 版权所有,引用请注明原作者,严禁复制转载

程序人生 - 公司的技术总监每天都在干蛤?

来看看我的一个技术总监朋友怎么说的。 0、背景 我带领的这支技术团队,规模已达百人。这个数字一直在增长,我感到无比兴奋。团队中的每个成员都独特而不可或缺,他们分别专注于前端、后端、测试、运维和DBA,还有一部分专注于客户端…

基于51单片机的数控直流可调电源设计[proteus仿真]

181基于51单片机的数控直流可调电源设计[proteus仿真] 电源系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的数控直流可调电源设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2&#xffe…

Kotlin/Java中String的equals和==

Kotlin/Java中String的equals和 在Java中,如果定义一个常量String和new出一个String对象,是不同的: String s1 "zhang" String s2 new String("zhang") 因为在Java看来,s1只是一个常量,会放在…

FRM模型十六:期权策略(期权组合)

文章目录 备兑看涨期权(Covered Call)保护看跌期权(protective put)牛市价差套利熊市价差套利写在后面 本文所有代码基于windAPI,复现前先下载客户端并注册账号 备兑看涨期权(Covered Call) 构…

CVE-2022-1310:RegExp[@@replace] missing write barrier lead a UAF

文章目录 环境搭建漏洞分析漏洞利用漏洞触发链RCE原语构造 总结参考 环境搭建 嗯,这里不知道是不是环境搭建的有问题,笔者最后成功的实现了任意地址读写,但是任意读写的存在限制,任意写 wasm 的 RWX 区域时会直接报错&#xff0c…

暗光增强——IAT网络推理测试(详细图文教程)

IAT模型由两个独立的分支组成,局部分支用于像素调整,并输出两个用于加法和乘法的特征图。全局分支用于全局调整并输出颜色矩阵和gamma值,全局分支受DETR启发,网络通过动态查询学习的方式更新颜色矩阵和gamma值。整个模型只有超过9…

设置浏览器显示小于12px以下字体

问题 我们在项目开发过程中有时候会遇到设计师给的小于12px的字体,IE、火狐浏览器、移动端等小于12px的字号大小还是可以正常显示的,但是谷歌浏览器上显示字体最小为12px,css设置font-size:10px,运行代码显示结果仍然…

JAVA基础:数组、重载、数据类型、封装、字符串、静态、继承、重写、多态、代码块、权限、接口、内部类

1 数组 //静态初始化 int[] arr1new int[]{1,2,3,4} //简化形式 int[] arr2{1,2,3,4} //动态初始化 int[] arr3new int[5] 2 方法重载 在同一个类中的多个方法的方法名相同,参数个数不同,参数类型不同,参数类型顺序不同 public class Test1 {public …

KubeSphere 社区双周报|2024.02.29-03.14

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2024.02.29-03.14…

多媒体操作流程

! 从左至右依次为:话筒、投影遥控器、ppt演讲笔、幕布升降遥控器、无线投屏连接器 主机箱 投影仪 二、操作流程 1、打开主机电源:最下面两台设备的开关打开 2、打开投影仪:用投影遥控器对准投影仪按开机键(如无需用到…

SwiftUI的context Menu

SwiftUI的 context Menu 现在来演示一下如何使用 SwiftUI 的 Context Menu 。 代码: import SwiftUIstruct ContextMenuBootCamp: View {State var bgColor: Color .purplevar body: some View {VStack(alignment: .leading, spacing: 10.0) {Image(systemName: …

【开源】SpringBoot框架开发公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

力扣刷题日记——L83. 删除排序链表中的重复元素

1. 前言 今天是力扣刷题打卡的第四天,今天带来一道简单题。一开始做了一道中等难度的题,但是很遗憾,没有解出来,但是为了不耽误今天的打卡计划,所以先选一个简单题做了,回头做出来那道题再和大家分享。话不…

一口吃掉Linux基础操作

一般在windows上面想要操作Linux系统就需要装软件搞一个虚拟机,我用的是Ubuntu22,就是Linux的发行版.安装Ubuntu的过程比较复杂,最重要的一点是安装时要断网,否则会很慢。 Ubuntu 配置指南 — 地震“学”科研入门教程 先介绍一个…

安卓通过termux部署ChatGLM

一、安装Termux并进行相关配置 1、安装termux Termux 是一个 Android 终端仿真应用程序,用于在 Android 手机上搭建一个完整的 Linux 环境。 不需要 root 权限 Termux 就可以正常运行。Termux 基本实现 Linux 下的许多基本操作。可以使用 Termux 安装 python&…

logistic回归分析

结局变量:二分类(常见)或多分类变量研究一个或多个原因变量和结果变量的因果关系 eg:Y必须是分类变量

手写简易操作系统(九)--实现打印函数

前情提要 前面我们已经进入内核程序了,中间穿插了一点特权级的知识,现在我们开始准备一个打印函数 很不幸,还有汇编程序 一、C调用规约 因为涉及到C与汇编的联合编程,我们这里简述一下调用规约,调用规约就是约定参…

【DataWhale学习】用免费GPU线上跑chatGLM项目实践

用免费GPU线上跑chatGLM项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动,我很感兴趣就参加啦。之前就对chatGLM有所耳闻,是去年清华联合发布的开源大语言模型,可以用来打造个人知识库什么的,一直没有尝试。而…

MES管理系统中电子看板都有哪些类型?

随着工业信息化和智能制造的不断发展,MES管理系统已经成为现代制造业不可或缺的重要工具。MES管理系统通过集成和优化生产过程中的各个环节,实现对生产过程的实时监控、调度和管理,提高生产效率和质量。 在生产制造过程中,看板管…