主页 > imtoken钱包怎么登录 > 比特币私钥、公钥和地址的关系

比特币私钥、公钥和地址的关系

imtoken钱包怎么登录 2023-01-17 09:32:23

哈希函数

哈希函数,也称为哈希函数,给定一个输入x,它会计算出对应的输出H(x)。哈希函数的主要特点是:1.输入x可以是任意长度的字符串2.输出结果是H(x)的长度是固定的3.H( x) 计算过程高效(对于长度为n的字符串x,计算H(x)的时间复杂度应该是O(n))

椭圆曲线加密算法

椭圆曲线在密码学中的使用分别由 Neal Koblitz 和 Victor Miller 于 1985 年独立提出。它的主要优点是在某些情况下,它使用比其他算法(例如 RSA)更小的密钥,但提供相当或更高级别的安全性。比特币使用基于 secp256k1 椭圆曲线数学的公钥密码算法。它包含一个私钥和一个公钥。私钥用于签署交易并将签名和原始数据发送到整个比特币网络。公钥被整个网络中的节点用来验证交易的有效性。签名算法保证交易由拥有对应私钥的人签发。

BASE58 编码 Base58 是比特币中使用的一种独特的编码方式,主要用于生成比特币钱包地址。使用数字“0”、大写“O”、大写“I”和小写“l”,以及“+”和“/”符号1.比特币字母:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

2.门罗字母:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

3.Ripple> 字母:

p>rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

私钥

实际上是一个长度为256位的二进制数,256位=1.15e+77宇宙中所有原子的总数约为10 80次方。如果我们随机生成私钥2256+1次,必然会生成之前出现过的私钥;即使从概率的角度来看,如果我们生成一个私钥 2130 次比特币私钥有多少位数,就有 99% 的机会获得现有的私钥。但这种情况目前极为罕见。

公钥

使用椭圆曲线加密算法(ECDSA-secp256k1)计算私钥对应的未压缩公钥,此过程不可逆。公钥长度为65bytes:Header ID:1byte(0x0 4)X 整数:32 字节(BE) Y 整数:32 字节(BE)

地址

通过多次Hash传递公钥,第二次处理生成btc地址。从未压缩的公钥生成地址的过程:1.对完整的公钥(header ID + X-integer + Y-integer)进行sha256()操作,在结果,结果a的长度为20bytes2.将网络ID Byte:Main Network: 0x00Test Network: 0x6fNamecoin Net: 0x34添加到步骤1得到的结果中,得到的b的长度为21bytes3. 对第2步得到的结果连续进行两次sha256()运算,然后只取运算结果的前4个字节作为Checksum4.将第3步得到的Checksum加到第2步的b末尾2、得到c,长度为25bytes5.Base58对第4步生成的c进行编码,即得到地址步骤图:

对于压缩后的公钥,在生成地址时,在步骤1中,只能取标识头+X-integer部分的公钥。

私钥、公钥和地址在比特币转账中的作用

发起比特币转账时,将私钥视为账户密码。填写账单后,需要使用私钥对账单内容进行签名,获取签名信息SIG,然后将SIG附加到账单上:

SIG = H(详细信息,PRIVATE_KEY)

一旦知道 SIG 和账单内容,就不可能推导出私钥。那么,别人拿到账单信息和SIG后,如何验证SIG确实是由发送方地址对应的私钥签名的呢?这就是公钥的作用比特币私钥有多少位数,公钥应该附在账单上。当其他人拿到账单时,他们可以验证 SIG 是否合法。 true = VALIDATE(detail, SIG, PUBLIC_KEY )私钥->公钥->地址是单向不可逆过程,在签署交易信息时只暴露公钥,私钥是安全的: