区块链技术1---密码学基础

news2024/11/18 21:26:25

摘要:BTC属于加密货币,其中必然涉及到密码学的知识,而比特币比较开放,交易记录,交易金额甚至是底层源代码都是对外开放,那么加密使用在何处?这里就来谈一谈······


1:哈希

哈希函数是密码学的一个重要分支,它是将任意长度的输入变换为固定长度输出的不可逆的单向密码体制,在消息完整性检测(消息认证)和数字签名等方面有广泛的应用。Hash函数也称散列函数,是一种单向密码体制,即它是一个从明文到密文的不可映射的过程,即只有加密过程,没有解密过程

1.1:哈希函数的三个重要性质

  • collision resistance:如果x!=y,那么H(X)!=H(Y),对于一个给定的x很难找到y使得H(X)=H(Y)

  • hiding:已知H(X)无法反推出X,类似于X被隐藏起来了

  • puzzle friendly:对H(X)的范围是无法预测的

1.2:哈希函数介绍

  • 哈希碰撞:对于给定的X和Y,且X!=Y,有可能会得到Hash(X)=Hash(Y),这种情况则称为哈希碰撞。而collision resistance的性质保证如果有Hash(X)!=Hash(Y),则必然有X!=Y(但是这是理想状态,如果学过数据结构的同学应该知道常用的碰到哈希碰撞的解决办法有开放地址法等等)。在实际使用的过程中,哈希碰撞总是难以避免,但是我们只需要尽可能保证在X!=Y的前提下,使得Hash(X)!=Hash(Y),就可以认为其是collision resistance

  • collision resistance的意义:如果我们掌握了一条重要信息X,希望别人知道我有X,但是不希望别人知道X的具体信息,就可以通过告诉别人X的哈希值。由于collision resistance性质的保证,别人没有X,也就没有对应的Hash(X),因此别人也就知道你确实有X这一条信息。

  • hiding:我们认为,给定X和Hash(),可以很容易得到Hash(X),但没有办法在已知Hash(x)和Hash()的情况下,反推出X的具体取值,当然这也是一个理想的情况。

  • collision resistance和hiding结合实现digital commitment(数据保证): 可以拿市值预测的案例,某个人对某个市值进行预测,我们如何保证能够知晓其预测是否准确?最简单的是提前公布, 等待实际结果出现后验证。但实际中,当提前发布预测后,可能会由于预测者本身对市值实际结果造成影响(比如该预测者是业内极具影响力的人物)。 所以,应该将提前将其写于纸上并密封,交给第三方机构保管,等到实际结果出现后开启密封与实际对比,这就是digital commitment。而第三方机构需要能够使人信服,在实际生活中,有很多场景并不存在一个这样的第三方机构,而区块链技术正为此提供了一个很好的解决方法。 我们把预测结果看作X,提前公布Hash(X),等到预测结果发生时间来临后,公布X,如果根据X可以得到公布的Hash(X),则说明公布的X确实为所预先预测的 内容。从而,我们可以实际进行判断预测是否准确。实际使用中,为了X足够大,会对X进行“加盐”,对X拼接一 个nonce,对其整体取Hash。

  • Puzzle friendly:该性质要求哈希值计算事先不可预测, 仅仅根据输入很难预测出输出。例如:我们需要一个哈希值,存在于某一个范围内,只能通过不停运算查找出 来。该性质保证了比特币系统中,只能通过“挖矿”获得BTC。也就是说,该性质保证了工作量证明(POW)机制 可以运行下去【“挖矿难,但验证易”】。 在BTC系统中采用SHA-256和RIPEMD160哈希函数


2:挖矿

挖矿实际就是一个不断测试区块头部(block header)的随机数部分nonce使得整个区块头的哈希值满足H(block header)<= target的过程,这里的target通常前面x位都是0

区块的构成有区块头(block header)和区块体(block body)组成:

区块头的随机数就是nonce

2.1挖矿原理示意图


3:签名

3.1数字签名和手写签名的不同之处:

  • 手写签名是被签文件的物理组成部分;数字签名是连接到被签消息上的数字串

  • 数字签名和所签名的消息能够在网络中传输。手写签名使用传统的安全方式传输

  • 手写签名是通过将它与真是的签名进行对比来验证正确与否;而数字签名是利用公开的验证算法来验证

  • 数字签名的复制品是有效的;手写签名的复制品是无效的。

  • 数字签名是0和1的字符串,因消息而异;手写签名是模拟的,因人而异

3.2数字签名的安全要求:

  • 接受者能够核实签名者对消息的签名

  • 除了签名者,任何人不能伪造消息的签名

  • 同一消息不同时刻其签名是有区别的

  • 签名者事后不能抵赖对消息的签名,出现争议时,第三方可解决争端

3.3加入BTC系统账户:

在BTC系统中创建账户只需要生成一个公私钥对。公私钥对保证了“数字签名”的应用。大致流程如下:比如A转给B,A需要用自己的私钥给该交易签名,B通过A的公钥来验证该交易是否由A发起(保证了交易的安全性)。你可能会担心是否会有两个人有相同的公私钥对,其实不必担心,签名算法中创建相同公私钥对的可能性微乎其微,所以通过大量创建账户来盗取他人交易的做法是不可行的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

client-go实战之六:时隔两年,刷新版本继续实战

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 系列文章链接 client-go实战之一&#xff1a;准备工作client-go实战之二:RESTClientclient-go实战之三&#xff1a;Clientsetclient-go实战之四&#xff1a;…

JavaWeb开发(三)3.3——Spring Bean详解

一、Bean的概念 由 Spring IoC 容器负责创建、管理所有的Java对象&#xff0c;这些管理的对象称为 Bean&#xff0c;Bean 根据 Spring 配置文件中的信息创建。 二、基于XML方式管理bean对象 eg&#xff1a; <?xml version"1.0" encoding"UTF-8"?&…

【B-树、B+树、B* 树】多叉平衡搜索树,解决“IO次数”与“树高”问题~

目录 一、为什么会出现B-树&#xff1f; 面试题&#xff1a; 二、什么是B-树&#xff1f; 2.1、B,B-树,B*树 导航 三、B-树的模拟实现 3.1、插入结点分析 3.1.1、根节点的分裂 3.1.2、继续插入数据&#xff0c;分裂子节点 3.2.3、再次插入数据&#xff0c;导致根节点继…

tomcat和apache有什么区别?如何将内网发布到互联网访问?

tomcat、 apache是比较常用的搭建服务器的中间件&#xff0c;它们之间还是有一些区别差异的&#xff0c;我们通常会根据本地应用场景来选择合适的中间件来搭建服务器。在内网本地部署搭建服务器后&#xff0c;还可以通过快解析端口映射方法&#xff0c;将内网应用地址发布到互联…

Android原生检测Selinux的三种方法

本文介绍 3 种检测 Android 设备 SELinux 状态的方法, Java 层检测Selinux已经没有太多意义,因为不是很靠谱,随便一个hook代码就能绕过,所以我要告诉你如何在 C 层完成检测。这几种方法在效率和抵抗mock SELinux State 的技术方面都不相同,因此在使用之前你需要知道每种方…

Windows server——部署DNS服务

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 本章重点 一.DNS概述 1.DNS的诞生 二.DNS的功能 使用域名访问具有以下优点…

【大厂高频真题100题】《二叉树的序列化与反序列化》 真题练习第23题 持续更新~

二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限…

c语言 图形化贪吃蛇 多种功能 无需安装第三方库 课设 (附代码)

前言 类贪吃蛇是利用c语言模仿并实现经典游戏贪吃蛇&#xff0c;使其在窗口有贪吃蛇活动的规定范围&#xff0c;并完成一系列包括但不限于模仿蛇的移动&#xff0c;方向控制&#xff0c;吃到食物加分&#xff0c;撞上墙壁及蛇头碰到蛇身死亡等游戏功能。 附加功能&#xff1a…

软件测试复习03:动态测试——白盒测试

作者&#xff1a;非妃是公主 专栏&#xff1a;《软件测试》 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录逻辑覆盖法&#xff1a;最常用程序插桩技术基本路径法点覆盖边覆盖边对覆盖主路径覆盖符号测试错误…

前端leaflet框选下载bing遥感图

微软必应bing遥感图。bing地图比百度遥感图清晰很多&#xff0c;19级&#xff0c;百度是18级&#xff0c;同样的18级&#xff0c;bing地图比百度也清晰很多。所以没有必要用百度地图了。不过bing地图仅用于学习&#xff0c;商用要付费。参考了https://xiaozhuanlan.com/topic/6…

CV+Deep Learning——网络架构Pytorch复现系列——Detection(二:RtinaNet)更换backbones

上一话 CVDeep Learning——网络架构Pytorch复现系列——Detection(一&#xff1a;SSD:Single Shot MultiBox Detector 4.推理Detect)https://blog.csdn.net/XiaoyYidiaodiao/article/details/128683973?spm1001.2014.3001.5501 复现Object Detection&#xff0c;会复现的网络…

设计模式-门面模式

医院的例子 现代的软件系统都是比较复杂的&#xff0c;设计师处理复杂系统的一个常见方法便是将其"分而治之"&#xff0c;把一个系统划分为几个较小的子系统。如果把医院作为一个子系统&#xff0c;按照部门职能&#xff0c;这个系统可以划分为挂号、门诊、划价、化…

Web--Jedis

# Redis 1. 概念&#xff1a; redis是一款高性能的NOSQL系列的非关系型数据库 1.1.什么是NOSQL NoSQL(NoSQL Not Only SQL)&#xff0c;意即“不仅仅是SQL”&#xff0c;是一项全新的数据库理念&#xff0c;泛指非关系型的数据库。 随着互联网web2.0网…

Arch Linux 来报道!!!

导读Ubuntu 的制造商 Canonical 早已和微软进行合作&#xff0c;让我们体验了极具争议的 Bash on Windows。外界对此也是褒贬不一&#xff0c;许多 Linux 重度用户则是质疑其是否有用&#xff0c;以及更进一步认为 Bash on Windows 是一个安全隐患。 Unix 的 Bash 是通过 WSL (…

LabVIEW使用VI脚本创建和打开VI

LabVIEW使用VI脚本创建和打开VI按照下列步骤&#xff0c;可以创建一个VI&#xff0c;该VI使用VI脚本创建和打开VI。创建VI前&#xff0c;需先了解VI脚本的基本内容。必须启用VI脚本&#xff0c;才能显示VI脚本选板&#xff0c;使用相关属性和方法。1. 选择文件新建VI&#xff0…

第1章 ESP32-VSCODE环境搭建

ESP32-VSCODE环境搭建 环境安装 在Windows中安装ESP-IDF在vscode中安装Espressif IDF插件开始配置Espressif IDF插件 在vscode最上方点击&#xff1a;查看->命令面板&#xff0c;输入esp-idf:config&#xff0c;选择ESP-IDF:Configure ESP-IDF extension 选择EXPRESS Sele…

java07-面向对象2

一&#xff1a;面向对象的第二个特征&#xff1a;继承&#xff0c;关键字extends 1.继承的好处&#xff1a; 1&#xff09;减少代码的冗余&#xff0c;提高代码的复用​​​​​性。 2&#xff09;便于功能的扩展 3&#xff09;为之后多态性的使用&#xff0c;提供了前提 …

【阶段三】Python机器学习27篇:机器学习项目实战:数据降维:主成分分析PCA、基本原理与PCA模型:人脸识别

本篇的思维导图: 数据降维:主成分分析PCA 建立模型分析特征数据时,很可能会面临特征数据维度过大的问题。例如,根据已有的信用卡持有人信息及其违约数据来建立信用卡违约预测模型时,数据可能包含申请人的收入、年龄、性别、婚姻状况、工作单位等数百个维度的特征。…

【图像分类】基于yolov5的钢板表面缺陷分类(附代码和数据集)

写在前面&#xff1a; 首先感谢兄弟们的订阅&#xff0c;让我有创作的动力&#xff0c;在创作过程我会尽最大能力&#xff0c;保证作品的质量&#xff0c;如果有问题&#xff0c;可以私信我&#xff0c;让我们携手共进&#xff0c;共创辉煌。 Hello&#xff0c;大家好&#xf…

ArcGIS基础实验操作100例--实验100三维可视性分析

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验100 三维可视性分析 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&a…