公钥和公有地址有什么区别?

devtools/2024/11/13 9:20:27/

目录

前言(为了回答这个问题,有几件事需要理解。)

1、首先是哈希是什么。

2、接下来要了解的是公钥和私钥

3、其他

公钥和公有地址有什么区别?

总结


前言(为了回答这个问题,有几件事需要理解。)

1、首先是哈希是什么。

        简短的版本是它是一个返回特定长度值的函数。因此,无论输入是“Hi”还是“Hello”还是“This is an more piece of data”,哈希函数都将返回相同长度的输出,并且该输出将始终是相同的大小,并且对于给定的输入,输出将始终相同。哈希函数的另一个方面是它是“单向”的。将输入输入到哈希函数中并获得输出非常容易,但基本上不可能获得一些哈希输出并从中确定输入是什么。如果您能够这样做,则哈希被视为已损坏且无法使用。将哈希输出映射到输入的唯一方法是在输入和输出之间进行搅动,并将它们记录在查找表中。

2、接下来要了解的是公钥和私钥

        无论是椭圆曲线还是RSA,总体思路都是一样的。你有一个“私钥”,你可以从中派生你的公钥。人们可以将内容加密到您的公钥,如果他们这样做,那么只有您的私钥才能解密它们。因此,您可以公开发布您的公钥,然后人们可以加密只能使用您的私钥解锁的消息。私钥/公钥的第二个特点是数字签名。签名只能由您的私钥创建,但您的公钥可用于验证签名是否确实必须使用您的私钥创建。例如,我可以使用我的私钥来“签名”PDF文档,如果你有我的公钥、文档和签名文本,你可以验证我确实为该文档做了那个签名,而且我是用我的私钥做的。签名证明我拥有私钥,即使它不会向您或其他任何人透露私钥。

3、其他

        发送比特币的最常见方式是发送到地址,该地址是比特币公钥的哈希值。我们这样做的原因是,如果椭圆曲线存在漏洞,您的资金仍然是安全的,因为在您花钱之前甚至不知道公钥,只有哈希值是已知的。公钥只有在你花钱的时候才会显示,因为有必要证明数字签名来自你的私钥。比特币验证交易有效的方式是用公钥检查签名(被签名的数据不是PDF,而是比特币交易本身),比特币矿工和用户验证私钥确实做了那个签名(并为这个交易做了),然后他们还要验证公钥哈希与输出交易的哈希相同。如果这两件事是真的 - 签名是好的,哈希值匹配 - 那么交易是有效的,钱可以花掉。

        除了公钥之外,比特币还使用哈希值的原因是安全性。假设椭圆曲线存在一个缺陷,允许某人在 3 小时内从公钥派生私钥,但哈希函数仍然没有被破坏。那么你的钱在绝大多数时间里都是安全的,因为你可以花掉它,并在有人查看该交易(显示你的签名和你的公钥)之前,使用你的公钥对你的私钥进行逆向工程。而且你的公钥在你花钱之前甚至不会被透露,所以只要哈希函数仍然安全,你基本上没问题。

        因此,它是一种故障安全备份。在椭圆曲线或哈希函数被破坏的紧急情况下,用户仍然有一种紧急备份方式,可以在比特币软件更新时暂时保持他们的资金安全。这就是为什么很多人总是说你不应该重复使用地址,因为如果你以前从一个地址花钱,那么它的公钥已经是公开的,你就会失去紧急备份保护。


公钥和公有地址有什么区别

  • 生成方式:公钥是密钥对的一部分,直接由私钥生成;而公有地址是通过特定的算法,如哈希和编码,从公钥衍生出来的。
  • 使用场景:公钥在加密和签名验证中使用,而公有地址则用于比特币交易中接收资金。
  • 公开性:两者都可以公开,但公钥是生成公有地址的中间步骤,公有地址是最终用于交易的标识。
  • 安全性:私钥必须保密,泄露私钥会导致资金损失;而公钥和公有地址可以公开,因为它们不包含私钥信息

总结

        公钥,作为非对称加密体系中的一个关键元素,直接从私钥派生,它允许用户进行加密通信和安全的交易签名。而公有地址,则是公钥经过一系列哈希和编码过程后得到的,它为比特币网络中的资金转移提供了一个标准化的、可识别的格式。 公钥的公开性质使其成为生成公有地址的理想候选者,而公有地址的生成方式确保了即使在公开环境下,私钥的安全性也不会受到威胁。这种设计巧妙地平衡了实用性和安全性,是比特币系统安全性的基石之一。

     (地址是公钥的哈希值。因此,当您拥有私钥时,可以使用它来派生公钥,也可以用它来派生地址/哈希值。这就是为什么你只需要备份私钥,因为其他一切都可以从中派生出来)


http://www.ppmy.cn/devtools/10492.html

相关文章

Proxmox VE (PVE) 教学 (1) | 介绍与安装

在?好久没更新了,最近在研究 pve,这不刚研究透彻,所以就先记录一下吧。最近我会集中推出关于 Proxmox VE 的系列文章,该部分将会在heStudio博客同步更新,欢迎订阅,当然你也可以订阅本专栏。 介绍 | Proxmox VE:强大而灵活的开源虚拟化平台 Proxmox Virtual Environme…

设计模式之创建型模式详解

设计模式 创建型模式 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节&#xff0…

森林保镖:了解森林防火杆!/恒峰智慧科技

在茂密的森林中,火势一旦失控,后果将不堪设想。为了保护森林资源和生态环境,森林防火工作显得尤为重要。而森林防火杆作为一种新型的森林防火设备,正逐渐成为森林防火的重要保障。本文将为您详细介绍森林防火杆的功能和特点。 一、…

SQL Server详细使用教程及常见问题解决

一:使用教程 SQL Server是**一个功能强大的关系型数据库管理系统(RDBMS),由Microsoft开发**。 以下是使用SQL Server的详细教程,包括安装、基本概念和操作: 1. **安装SQL Server**: - 访问微软官…

gitee / github 配置git, 实现免密码登录

文章目录 怎么配置公钥和私钥验证配置成功问题 怎么配置公钥和私钥 以下内容参考自 github ssh 配置,gitee的配置也是一样的; 粘贴以下文本,将示例中使用的电子邮件替换为 GitHub 电子邮件地址。 ssh-keygen -t ed25519 -C "your_emai…

分布式与微服务的区别

首先分布式是一种系统部署模式,将一个系统分成多个不分进行运行。而微服务架构是一种更加精细化的设计方法,它是分布式的一个分支,主要强调将一个单体应用拆分成一组小型松耦合的服务,每个服务专注于单一业务功能并能够独立部署和…

在Nuxt.js中添加PostCSS自动前缀器

在其他浏览器中,有些 CSS 属性需要带有前缀。如-webkit- | -o- | -ms- 等等 Autoprefixer 是一个 PostCSS 插件,可以将你的CSS代码渲染到浏览器中自动补充厂商前缀,因此你不用担心自己编写的CSS代码有浏览器兼容性问题。 如: .fl…

python输入输出特殊处理

输出 需要满足输出一行后,再输出一行,行中每个元素用空格隔开 length len(tri) tmp [] for i in range(len(tri)):tmp tri[i]for j in range(len(tri[i])):print(tmp[j],end )print()输入p 一次性输入6个数字到列表中,并且输入的每个数…