区块链知识总结——比特币中的密码学原理

比特币中的密码学原理:

比特币的本质:crypto-currency.

比特币用到密码学中的两个功能:

1.哈希函数(cryptographic hash function)

三个重要性质:

(1)抗碰撞性collison resistance:对于任意给定的哈希函数,极其困难找到两个不同的输入值产生相同的哈希值。这意味着在理想情况下,两个不同的输入值会生成不同的哈希值。但由于输入空间远大于哈希值空间,碰撞是不可避免的。一个强大的哈希函数(例如:SHA-256)应该使碰撞发生的概率非常低。

(2)单向不可逆性hiding:对于给定的哈希值,计算出原始输入值是不可行的。哈希函数应该是单向的,即可以轻松计算哈希值,但无法通过哈希值逆推回原始输入。这个性质保证了哈希函数的安全性,防止从哈希值中推导出敏感信息。

                                                        x-->H(x)是容易的(或者是可行的)

                                                        H(x)-->x是困难的(或者是不可行的)

(3)puzzle friendly:对于给定的哈希值,找到与之匹配的输入值应该是困难且耗时的。这个性质在密码学中被广泛应用于各种协议和算法,例如工作量证明(Proof of Work)机制,其中需要通过计算满足一定条件的哈希值来解决谜题。

换一种说法就是哈希值是不可预测的,即如果想要H(x)落在某一个区域内没有什么好的办法,只能一个一个去试。

挖矿中的应用:

这三个性质共同确保了哈希函数的安全性和实用性。碰撞性质防止恶意攻击者找到两个相同的哈希值;隐藏性质保护原始数据的机密性;谜题友好性质则在分布式系统和密码学协议中提供了安全性和可靠性。

2.数字签名(非对称加密)

密钥分为公钥(public key)私钥(private key).

加密使用私钥;解密使用公钥

原理图如下:

数字签名可确保交易的合法性,即在交易被发送到区块链网络之前,发送者使用私钥对交易进行签名。一旦交易被写入区块链,任何人都可以使用发送者的公钥来验证交易的签名,从而确保交易未被篡改。

另一种解释:在比特币区块链中,私钥代表了对比特币的控制权。交易发起方用私钥对交易(包括转账金额和转账地址)签名并将签名后的交易和公钥广播,各节点接收到交易后可以用公钥验证交易是否合法。在这个过程中交易发起方无须暴露自己的私钥,从而实现保密目的。

ps:智能合约中的执行结果通常也会被数字签名以确保其完整性和可信度。当合约被执行时,合约执行的结果会被数字签名,并将签名与合约一起存储在区块链上,以供后续验证。

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

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

相关文章

3 xgboost

目录 1 定义 1.1 模型定义 1.2 损失函数 1.3 化简损失函数 xgboost比赛以及工程利器。目前存在大量有关算法文档。 XGBoost(eXtreme Gradient Boosting)是一种基于决策树集成的机器学习算法,被广泛应用于分类、回归和排名等任务。XGBoost…

vue快速入门(三十)vue的工程化开发安装配置

步骤很详细,直接上教程 上一篇 新增内容 安装nodejs安装脚手架工具安装vue项目运行项目服务退出项目服务 安装nodejs 没安装的友友可以参考这位大神的博文Node.js下载安装及环境配置教程【超详细】 安装脚手架工具 打开管理员cmd 输入此命令行npm i -g vue/cli …

access多表关联提示:语法错误(操作符丢失)在查询表达式中

在access数据库中执行多表关联时提示了一个错误 select * from Patient a inner join BioMain b on a.BioIDb.BioID inner join BioResult c on b.BioIDc.BioID where len(a.PatientID)>12 and b.AddTime>#2024-04-17 05:53:23# and b.AddTime<#2024-04-17 17:53:23#…

ASP.NET基于Web Mail收发系统设计与开发

摘 要 互联网络技术的不断发展&#xff0c;电子邮件服务已经成为人们基本的信息交互手段&#xff0c;也是网络服务中最早和最基本的服务之一。传统邮件系统大多是基于C/S结构&#xff0c;如Lotus notes、Microsoft Exchange Server等&#xff0c;这些邮件系统占用相对较多的服…

【WEEK8】 【DAY3】【DAY4】总览Spring Boot【中文版】

目录 2024.4.17 Wednesday1.总览1.1.先看个速成课&#xff0c;了解大概1.2.SpringBoot入门1.2.1.什么是Spring1.2.2.Spring是如何简化Java开发的1.2.3.什么是SpringBoot 1.3.第一个Spring Boot项目1.3.1.准备工作1.3.2.创建基础项目说明1.3.2.1.使用官方选配下载 2024.4.18 Thu…

libftdi1学习笔记 5 - SPI Nor Flash

目录 1. 初始化 2. CS控制例子 3. 读ID 3.1 制造商 3.2 容量大小 3.3 设置IO类型 3.3.1 setQSPIWinbond 3.3.2 setQSPIMxic 3.3.3 setQSPIMicrochip 3.3.4 setQSPIMicron 4. 写保护 5. 等待空闲 6. 擦除扇区 7. 页编程 8. 页读 9. 写 10. 读 11. 验证 基于M…

管理能力学习笔记五:识别团队角色,因才施用

识别团队角色&#xff0c;因才施用&#xff0c;需要做到以下三点 扬长避短 管理者要学会问自己员工能把什么做好&#xff0c;而不是想方设法改造他们的短处 。 – 彼得德鲁克 人岗匹配 将合适的人放在合适的位置 人才多样化 团队需要各式各样的人才&#xff0c;才能高效配合…

【Linux】引导过程与服务控制

目录 一、Linux操作系统引导过程 1.linux开机引导过程 2.系统初始化进程 1.init进程 2.进程启动方式 二、运行级别和Systemd单元类型 1.运行级别 2.Systemd 三、启动类故障恢复 1.修复MBR扇区故障 2.修复GRUB引导故障 3.root密码忘记的修改方式 四、系统服务控制 …

初识ansible服务及ansible主机清单配置

目录 1、什么是自动化批量管理 2、自动化工具ansible架构 3、ansible服务专用术语对照表 4、设置主机清单&#xff08;inventory&#xff09; 4.1实验环境准备 4.2配置主机清单 4.2.1分组基本格式 4.2.2指定用户名&#xff0c;密码。端口 4.2.3子组 4.3查看 4.3.1看…

基于SpringBoot+Vue的服装销售商城系统(源码+文档+包运行)

一.系统概述 顺应互联网发展的时代热潮&#xff0c;着力于服装电商&#xff0c;满足消费者的日常需求的同时解决传统服装销售的难题。商家如果还用之前的只有线下卖衣服&#xff0c;已经很落伍了&#xff0c;这样会导致了效率低下。而且&#xff0c;时间一长的话&#xff0c;积…

AIGC算法2:LLM的复读机问题

1. 什么是LLM的复读机问题 字符级别重复&#xff0c;指大模型针对一个字或一个词重复不断的生成例如在电商翻译场景上&#xff0c;会出现“steckdose steckdose steckdose steckdose steckdose steckdose steckdose steckdose…”&#xff1b;语句级别重复&#xff0c;大模型针…

不容错过的 IntelliJ IDEA 插件 Top 10

虽然 IntelliJ IDEA 功能齐全&#xff0c;您仍然可以增添一些个性化的设置。 JetBrains Marketplace 上有着大量实用插件&#xff0c;可以满足您个人或企业的特定需求。 内容库非常庞大&#xff0c;可能会让人眼花缭乱。 在这篇博文中&#xff0c;我们将分享最近和一直以来最受…

(十四)C++自制植物大战僵尸游戏windows平台视频播放实现

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs VLC库 在Cocos2d-x游戏开发框架中&#xff0c;没有实现windows平台视频播放的功能&#xff0c;需要自定义实现。在本项目中使用vlc库实现windows平台的视频播放功能。 vlc官网&#xff1a;网址 下载完成后&#x…

如何配置Postgres的自动扩展功能以应对数据增长

文章目录 解决方案1. 表空间管理2. 分区表3. 自动扩展配置4. 监控和告警5. 使用外部工具和服务 示例代码示例1&#xff1a;创建表空间示例2&#xff1a;创建分区表示例3&#xff1a;调整配置参数示例4&#xff1a;使用监控和告警工具 总结 在PostgreSQL中&#xff0c;随着数据的…

Spring Boot:Web应用开发之登录与退出的实现

Spring Boot 前言实现登录功能配置拦截器 实现退出功能 前言 登录与退出功能作为 Web 应用中的基础且重要的组成部分&#xff0c;直接关系到用户的安全和隐私保护。通过实现登录与退出功能&#xff0c;可以对用户的身份进行验证和授权&#xff0c;确保只有合法的用户才能访问特…

吃鸡游戏msvcp140.dll丢失的解决方法

msvcp140.dll 是一个与 Microsoft Visual C Redistributable 相关的动态链接库&#xff08;DLL&#xff09;文件&#xff0c;是 Windows 操作系统中众多应用程序正常运行所必需的关键组件之一。以下是对 msvcp140.dll 文件的总体介绍和msvcp140.dll丢失的多个解决方案分享。 *…

Java项目实现Excel导出(Hutool)

官网&#xff1a; Excel生成-ExcelWriter (hutool.cn) 1.使用Hutool工具实现Excel导出&#xff08;.xlsx格式&#xff09; 业务场景&#xff1a; 使用SpringCloudmysqlmybatis-plus需要将数据库中的数据导出到Excel文件中 前端为Vue2 第零步&#xff1a;导入依赖 <!-…

NPL预训练模型-GPT-3

简介及特点 GPT-3是一个由OpenAI开发的自然语言处理&#xff08;NLP&#xff09;预训练模型&#xff0c;它是生成式预训练变换器&#xff08;Generative Pretrained Transformer&#xff09;系列的第三代模型。GPT-3以其巨大的规模和强大的语言处理能力而闻名&#xff0c;具有…

快速上手Linux核心命令

Linux 的重要性不用我多说了吧&#xff0c;大多数互联网公司&#xff0c;服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统。 只有熟练掌握Linux核心命令&#xff0c;在使用起来我们才会得心应手 这里给大家整理了Linux一些核心命令&#xff0…

游戏、app抓包

文章目录 协议app抓包游戏抓包 协议 在抓包之前&#xff0c;首先我们要对每个程序使用什么协议有个大致的了解&#xff0c;比如网页这种就是走的http协议。 在一些app中我们通过发送一个请求&#xff0c;然后服务器接受&#xff0c;响应&#xff0c;返回一个数据包&#xff0c…