比特币私钥、公钥和地址是什么关系?哈希函数(也称Hash函数),给定一个输入X,它会计算出对应的输出H(x)。。散列函数的主要特征是:1.输入X可以是任意长度的字符串;2.输出结果,即H(x)的长度是固定的;3.计算H(x)的过程是高效的(对于长度为n的字符串X,计算H(x)的时间复杂度应为O(n))
。椭圆曲线加密算法
椭圆曲线在密码学中的应用是由NealKoblitz和VictorMiller于1985年独立提出的。。它的主要优点是,在某些情况下,它使用比其他算法(如RSA)更小的密钥,但提供同等或更高级别的安全性。比特币使用基于secp256k1椭圆曲线数学的公钥加密算法。它包含一个私钥和一个公钥。私钥用于交易签名,将签名和原始数据发送到整个比特币网络,公钥用于全网节点验证交易的有效性。签名算法确保事务由拥有相应私钥的人发布。
BASE58编码base58是比特币中使用的一种独特的编码方式,主要用于生成比特币的钱包地址。与Base64相比。Base58,数字';0'信';o'还有那封';我';没有被使用。,和字母小写l',以及''和'/'符号1.比特币所用字母表:
123456789abcdefghjklmnpqrstuvwxyzabcdefghijkmnopqrstuvwxyz
2.关于MoneroDasverwendete字母表:
123456789abcdefghjklmnpqrstuvwxyzabcdefghijkmnopqrstuvwxyz
第三章.关于RippleDasverwendete字母表rpshnaf39wbudneghjklm4pqrst7vwxyz2bcdecg65jkm8ofqi1tuvaxyz
私钥(XY002)
其实是一个长度为256bit的二进制数,宇宙中所有原子的总数大约是10的80次方。如果我们随机生成私钥2256次。,那么必然会生成一个之前已经出现过的私钥;即使从概率的角度来看,2130次私钥生成后,也有99%的可能得到现有的私钥,但目前这种情况极其罕见。
公钥
使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥对应的未压缩公钥是不可逆的。.Thelengthofpublickeyis65bytes:headerID:1byte(0x04)Xinteger:32bytes(BE)Yinteger:32bytes(BE)
address
.公钥经过多次哈希处理,生成btc地址。用未压缩的公钥生成地址的过程:1.对完整的公钥(头IDX-整数Y-整数)执行一次sha256()操作。,结果A的长度是20字节2。在步骤1得到的结果前加上网络ID字节:mainnetwork:0x00testnetwork:0x6fnamecoinnet:0x34,B的长度为21bytes3。对步骤2中获得的结果连续执行两次sha256()运算。,然后只取运算结果的前4个字节作为校验和。4.将步骤3中得到的校验和加到步骤2的末尾,得到长度为25bytes5的C。5.用Base58对步骤4中生成的C进行编码。
,即得到地址步骤的示意图:压缩公钥生成地址时,第一步可以只取公钥标识头的X整数部分。
私钥、公钥、地址在比特币转账中的作用
在发起比特币转账时,私钥被视为账户的密码。账单完成后,需要对私钥声明的内容进行签名,得到签名信息sig,然后将sig附在账单上:
sig=h(detail,private_key)
已知SIG和账单内容。,是不可能推导出私钥的。那么,别人拿到了计费信息和SIG后,如何验证SIG确实是用发件人地址对应的私钥签名的呢?这就是公钥的作用,公钥应该附在账单上。别人买单的时候,,可以验证SIG是否合法。True=validate(detail,sig,public_key)私钥-
公钥-
地址是一个单向不可逆的过程。,对交易信息签名时只暴露公钥,私钥是安全的: