主页 > imtoken官网电话 > 比特币私钥、公钥和地址在转账中的作用
比特币私钥、公钥和地址在转账中的作用
哈希函数
哈希函数(Hash FuncTIon),又称散列函数,给定一个输入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是比特币特有的编码方式,主要用于生成比特币钱包地址
与Base64相比,Base58没有使用数字“0”、大写字母“O”、大写字母“I”、小写字母“l”以及“+”和“/”符号。
一、比特币使用的字母表:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
2.门罗币使用的字母表:
123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
3. Ripple使用的字母表:
rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz
私钥
它实际上是一个长度为256bit的二进制数,256bit = 1.15e+77
宇宙中所有原子的总数大约是10的80次方。 如果我们随机生成一个私钥2256+1次,必然会生成一个之前出现过的私钥; 即使从概率的角度来看,经过2130次私钥生成之后,依然有99%的几率得到一个已经存在的私钥。 但现在这种情况极不可能发生。
公钥
使用椭圆曲线加密算法(ECDSA-secp256k1))计算出私钥对应的未压缩公钥,这个过程是不可逆的。
公钥长度为 65 字节:
标头 ID:1 个字节 (0x04)
X 整数:32 字节 (BE)
Y整数:32字节(BE)
地址
公钥经过多次哈希和处理以生成比特币地址。
使用未压缩的公钥生成地址的过程:
1、对完整公钥(head ID + X-integer + Y-integer)进行sha256()运算,对比特币私钥进行运算,对结果进行ripemd160()运算。 结果a的长度为20bytes
2、在第一步得到的结果前加上Network ID Byte:
主网:0x00
测试网络:0x6f
域名币网络:0x34
得到的b长度为21bytes
3、对第2步得到的结果进行连续两次sha256()运算,然后只取运算结果的前4个字节作为校验和
4.将步骤3得到的Checksum添加到步骤2的b末尾,得到长度为25字节的c
5.对第4步生成的c进行base58编码得到地址
步骤图标:
为压缩公钥生成地址时,只需要在步骤1中取公钥的身份头+X整数部分即可。
私钥、公钥和地址在比特币转账中的作用
发起比特币转账时,使用私钥作为账户密码。 账单填写完成后查找沉睡比特币私钥,需要用私钥比特币私钥对账单内容进行签名,得到签名信息SIG,然后将SIG附在账单上:
SIG = H(详细信息查找沉睡比特币私钥,PRIVATE_KEY)
无法从已知的 SIG 和账单内容中推导出私钥。 那么,其他人拿到账单信息和SIG后,如何验证SIG确实是用发送方地址对应的私钥签名的呢?
这就是公钥的作用,公钥附在账单上。其他人拿到账单后,可以验证SIG是否合法
true = VALIDATE(详细信息,SIG,PUBLIC_KEY)
私钥-“公钥-”地址是一个单向不可逆的过程。 签署交易信息时只公开公钥。 私钥是安全的:
币圈新闻,版权所有丨如未注明,均为原创丨本站受BY-NC-SA协议授权
转载请注明原文链接:比特币私钥比特币私钥、公钥和地址在转账中的作用