私钥公钥地址 公钥能解开私钥吗
一、入门科普:比特币的私钥、公钥和地址是什么
上一篇,我们讲到了币圈要注意防范传销、洗钱等一类的骗局,保护好自己的资产。这一篇,我要告诉大家,进行比特币交易时,都会用到的私钥、公钥与地址,如果你还不了解它们的重要性,随便交易,很容易弄丢自己的资产。那什么是私钥、公钥与地址?三者之间有着什么样的关系呢?
01
私钥
1.导出:
创建钱包后,输入密码可以导出私钥,私钥由很长的字符串组成,且是随机生成的,一个地址只有一个私钥。
2.用途:
用于控制交易时的签名,拥有私钥才能控制账户的资金,相当于银行账户的交易密码,用来解密公钥加密的信息。
3.注意事项:
私钥是用来证明这笔交易的发起人确实是比特币的所有者。所以私钥一定不能曝光,私钥一旦泄露,你的比特币将会有被盗的风险。用户必须保管好私钥,防止泄露或丢失。
02
公钥
1.导出:
公钥是由私钥通过算法生成的,使用了椭圆曲线加密,通过私钥可以计算出唯一的公钥。
2.用途:
公钥是用来验证交易的签名,一个私钥签名的数据,只有对应的公钥才能对其进行验证,公钥相当于银行账户,公开后无风险。
03
地址
1.导出:
地址由公钥生成的,使用了哈希运算。创建钱包后会生成一个以“0x”开头的 42位字符串,这个字符串就是钱包地址,一个钱包对应一个钱包地址,地址唯一且不能修改,也就是说一个钱包中所有代币的转账收款地址都是一样的。
2.用途:
由于公钥太长,在交易中不方便使用,所以就有了地址,地址是由公钥生成的,地址相当于银行卡号,用来发送和接收比特币。
3.注意事项:
平台上不同代币的转账收款地址一般都不同,因此,转币到交易平台前一定要确认好地址。
总结
私钥→公钥→钱包地址(不可逆)
私钥用来签名交易,公钥用来验证私钥签名的交易,地址用来收款。
公钥、私钥以及地址都在比特币交易中起到了不同的作用,所以才能顺利的完成一笔数字货币的交易。所以用户必须好好保存,防止泄露重要信息。
二、什么是比特币私钥,公钥和地址
比特币私钥、公钥和地址的定义及关系
私钥:
定义:私钥是比特币中最核心的部分,它是一个由32个字节(256位)组成的数组,通常被转换成一种易于识别和输入的格式(如Base58编码),形如5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss的字符串就是一个私钥的示例。功能:私钥是比特币安全性的基础,它用于对交易进行签名,以证明交易是由私钥的持有者发出的。只有拥有私钥的人才能花费对应地址上的比特币。生成:私钥的生成需要依赖密码学上安全的随机性,以确保私钥的唯一性和安全性。私钥的总数非常大(2^256个),因此通过遍历所有私钥来找到有比特币的私钥在现实中是不可能的。公钥:
定义:公钥是由私钥通过椭圆曲线算法生成的,它是一个65个字节(未压缩)或33个字节(压缩)的数组,通常被转换成16进制格式显示,如04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235。功能:公钥用于验证私钥签名的正确性。在比特币交易中,发送方会使用私钥对交易进行签名,并将公钥一起发送给接收方和矿工。矿工可以使用公钥来验证签名的有效性,从而确认交易是由私钥的持有者发出的。压缩:公钥可以被压缩,压缩后的公钥只有33个字节,而未压缩的公钥有65个字节。压缩公钥可以减少交易数据的大小,对整个比特币网络有益。地址:
定义:地址是由公钥生成的,它是一个经过Base58编码的字符串,形如1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN或1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV。功能:地址是比特币网络中用于接收比特币的唯一标识。用户可以将比特币发送到对方的地址上,而无需知道对方的私钥或公钥。地址的生成过程涉及对公钥进行SHA-256和RIPEMD-160哈希运算,并在结果前添加一个版本字节,然后进行Base58编码。与私钥、公钥的关系:一个私钥可以生成一个压缩的公钥和一个未压缩的公钥,每个公钥都会生成一个对应的地址。因此,一个私钥实际上对应两个地址(一个由未压缩公钥生成,一个由压缩公钥生成)。然而,这两个地址上的比特币都可以使用同一个私钥来花费。总结:
私钥是比特币安全性的基础,用于对交易进行签名。公钥用于验证私钥签名的正确性。地址是由公钥生成的,用于接收比特币。一个私钥可以生成两个地址(一个由未压缩公钥生成,一个由压缩公钥生成),但两个地址上的比特币都可以使用同一个私钥来花费。
(注:此图展示了比特币私钥、公钥和地址之间的生成关系及流程)
三、https 证书 私钥 公钥
引言
使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的。也就是说,任何人都可以通过适当的工具拦截或者监听到在网络上传输的数据流。但是有时候,我们需要在网络上传输一些安全性或者私秘性的数据,譬如:包含信用卡及商品信息的电子订单。这个时候,如果仍然使用HTTP协议,势必会面临非常大的风险!相信没有人能接受自己的信用卡号在互联网上裸奔。
HTTPS(超文本传输安全)协议无疑可以有效的解决这一问题。所谓HTTPS,其实就是HTTP和SSL/TLS的组合,用以提供加密通讯及对网络服务器的身份鉴定。HTTPS的主要思想是在不安全的网络上创建一安全信道,防止黑客的窃听和攻击。
SSL(安全套接层)可以用来对Web服务器和客户端之间的数据流进行加密。
SSL利用非对称密码技术进行数据加密。加密过程中使用到两个秘钥:一个公钥和一个与之对应的私钥。使用公钥加密的数据,只能用与之对应的私钥解密;而使用私钥加密的数据,也只能用与之对应的公钥解密。因此,如果在网络上传输的消息或数据流是被服务器的私钥加密的,则只能使用与其对应的公钥解密,从而可以保证客户端与与服务器之间的数据安全。
数字证书(Certificate)
在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢?
所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。数字证书拥有以下几个优点:
使用数字证书能够提高用户的可信度
数字证书中的公钥,能够与服务端的私钥配对使用,实现数据传输过程中的加密和解密
在证认使用者身份期间,使用者的敏感个人数据并不会被传输至证书持有者的网络系统上
X.509证书包含三个文件:key,csr,crt。
key是服务器上的私钥文件,用于对发送给客户端数据的加密,以及对从客户端接收到数据的解密
csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名
crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
备注:在密码学中,X.509是一个标准,规范了公开秘钥认证、证书吊销列表、授权凭证、凭证路径验证算法等。
创建自签名证书的步骤
注意:以下步骤仅用于配置内部使用或测试需要的SSL证书。
第1步:生成私钥
使用openssl工具生成一个RSA私钥
1$opensslgenrsa-des3-outserver.key2048
说明:生成rsa私钥,des3算法,2048位强度,server.key是秘钥文件名。
注意:生成私钥,需要提供一个至少4位的密码。
第2步:生成CSR(证书签名请求)
生成私钥之后,便可以创建csr文件了。
此时可以有两种选择。理想情况下,可以将证书发送给证书颁发机构(CA),CA验证过请求者的身份之后,会出具签名证书(很贵)。另外,如果只是内部或者测试需求,也可以使用OpenSSL实现自签名,具体操作如下:
1$opensslreq-new-keyserver.key-outserver.csr
说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
1
2
3
4
5
6
7
CountryName(2lettercode)[AU]:CN
StateorProvinceName(fullname)[Some-State]:Beijing
LocalityName(eg,city)[]:Beijing
OrganizationName(eg,company)[InternetWidgitsPtyLtd]:joyios
OrganizationalUnitName(eg,section)[]:infotechnology
CommonName(e.g.serverFQDNorYOURname)[]:demo.joyios.com
EmailAddress[]:liufan@joyios.com
第3步:删除私钥中的密码
在第1步创建私钥的过程中,由于必须要指定一个密码。而这个密码会带来一个副作用,那就是在每次Apache启动Web服务器时,都会要求输入密码,这显然非常不方便。要删除私钥中的密码,操作如下:
1
2
cpserver.keyserver.key.org
opensslrsa-inserver.key.org-outserver.key
第4步:生成自签名证书
如果你不想花钱让CA签名,或者只是测试SSL的具体实现。那么,现在便可以着手生成一个自签名的证书了。
需要注意的是,在使用自签名的临时证书时,浏览器会提示证书的颁发机构是未知的。
1$opensslx509-req-days365-inserver.csr-signkeyserver.key-outserver.crt
说明:crt上有证书持有人的信息,持有人的公钥,以及签署者的签名等信息。当用户安装了证书之后,便意味着信任了这份证书,同时拥有了其中的公钥。证书上会说明用途,例如服务器认证,客户端认证,或者签署其他证书。当系统收到一份新的证书的时候,证书会说明,是由谁签署的。如果这个签署者确实可以签署其他证书,并且收到证书上的签名和签署者的公钥可以对上的时候,系统就自动信任新的证书。
第5步:安装私钥和证书
将私钥和证书文件复制到Apache的配置目录下即可,在Mac 10.10系统中,复制到/etc/apache2/目录中即可。
-
芝麻开门交易所官网地址 芝麻交易所排名 11-09