加密货币的本质,比特币私钥在哪里
作为加密货币的代表,也是世界上第一个也是规模最大的加密货币,理解了比特币的本质也就懂了绝大多数加密货币的原理。那么比特币私钥在哪里?比特币包含一系列密钥对,每个密钥对包含一个公钥和私钥,马上带来详情解读。
一、什么是比特币私钥?
私钥可以理解为一个随机数,比特币地址中资金的控制取决于相应私钥的控制权,比特币交易中,私钥用于生成支付比特币所必需的签名以证明对资金的所有权。
选择随机性来源(熵源),生成一个比特币私钥在本质上与“在1到22562256之间选一个数字”无异。建议使用密码学安全的伪随机数生成器(CSPRNG),并且需要有一个来自具有足够熵值的源的种子。
二、什么是比特币公钥?
通过椭圆曲线算法可以由私钥生成公钥,该过程是不可逆的过程:K(公钥)=k(私钥)*G(常数点)。其反向运算,被称为“寻找离散对数”–已知公钥K来求出私钥k–是极其困难的。
三、比特币密钥生成原理是什么?
椭圆曲线加密法是一种基于离散对数问题的非对称(或公钥)加密法,可以用对椭圆曲线上的点进行加法或乘法运算来表达。
开始先通过操作系统随机数生成器生成一个随机数,并进行SHA256哈希运算(结果必须是1到n-1之间的任何数字,n=1.158 * 1077),该数字即为私钥最原始的内容,所以需要通过密码学安全的随机源中选出一串随机字节,以防暴力破解使用SHA256哈希运算是为了方便产生一个固定长度为256位的数字,使用十六进制表示如下:6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a
而如果使用压缩公钥,在私钥的结果后面增加0x01;若使用非压缩公钥,则不追加0x01.私钥的后缀01用于告诉钱包私钥对应的公钥和地址是压缩格式还是非压缩格式的。原因是同一私钥的压缩公钥与非压缩公钥是不同的,生成的地址也完全不同,也就是说会出现两个公钥和两个地址对应一个私钥的情况,如果没有标识,钱包无法将私钥与公钥和地址一一对应。本次使用压缩格式举例
6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01
随后对私钥进行base58check编码,即转换为WIF(Wallet Import Format)格式
在私钥前添加版本前缀,0x80为WIF前缀
806954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01
将上面结果进行double-SHA256运算后取前四字节作为校验码拼接在最后,然后进行base58编码得到私钥的最终形态(非WIF压缩格式的结果前缀为5.WIF压缩格式的结果前缀为K或L)KzkTe43L5cbSX64txJMcsFvJC6vov7nYaGdYicz5N8Mds4ThN2XM
然后使用secp256k1椭圆曲线算法将私钥转换为公钥(Gx,Gy),椭圆曲线算法是一种基于离散对数问题的非对称加密法,其数学运算是单向的,所以私钥可以转换成公钥,但公钥不能转换回私钥,将上面的结果转换后得到如下结果(十六进制):(0ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6.f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d)
将公钥合并成为十六进制数
压缩公钥可以大大节省公钥所占空间(减少256bits),是比特币客户端当前的默认格式,并且也兼容非压缩公钥,未压缩(前缀04.将Gx,Gy拼接)
040ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d
压缩(y为偶数前缀02.y为奇数前缀03.仅保留Gx,Gy可通过Gx计算)
030ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6
这之后可以将公钥转换为比特币地址
1.RIPEMD160(SHA256(公钥))得出20字节/160 bits公钥哈希,使用两种Hash函数转换最大的好处是如果其中一种函数被破解,仍然能保证安全性。
2.对公钥哈希进行Base58check编码(版本前缀 + 公钥哈希 + SHA256(SHA256(版本前缀+公钥哈希))前4字节进行Base58编码),此处为P2PKH地址,前缀为0x00.得到最终的比特币地址如下:17FjrmErg5a39P7UsyYCchpyzSnq9gmMuJ
四、小结
私钥是一个随机数,私钥通过椭圆曲线算法生成公钥,公钥再通过单向加密哈希函数生成比特币地址。比特币使用非对称加密,使得签名只能由私钥产生,且在不泄露私钥情况下所有人都可以验证该签名p。私钥和公钥有可以被编码成多种类型格式,无一例外的作用就是为了方便识别及钱包操作方便。
你可能感兴趣的文章
-
比特币钱包、比特币钱包的类型
-
比特币钱包、比特币钱包的类型
二、比特币钱包的类型根据比特币钱包的形态可以分为以下几种类型:PC或手机钱包客户端、在线网页钱包、甚至是记录了比特币私钥的小本本(纸钱包)或者大脑(脑钱包),根...
2024-10-16
一文 了解比特币地址的类型和钱包的用法
-
一文 了解比特币地址的类型和钱包的用法
原文标题:《科普 | 比特币地址的类型和钱包的用法》,作者SatoshiLabs在追求更好的技术时,一些附属的事物免不了会变得有些混乱。虽然比特币地址的格式化方...
2024-10-15
加密货币的本质,比特币私钥在哪里
-
加密货币的本质,比特币私钥在哪里
本次使用压缩格式举例 6954ac6d0402d7239f1cc150da224d0ef08fd1226f245f06fe4d6d68accfce8a01 ...
2024-10-14
什么是区块链稳定币如何查询稳定币数据
-
什么是区块链稳定币如何查询稳定币数据
稳定币是指价格波动性较低的加密货币,稳定币的价格与法定货币挂钩。例如USDT,即Tether发行的稳定币,与美元USD挂钩,1USDT约等于1美元。USDT占据...
2024-10-12
区块链转账是怎么收费的?
-
区块链转账是怎么收费的?
早年银行间转账都是收手续费的,一般按照转账金额的一定比例收取。而跨国转账,由于货币国与国之间的壁垒及外汇管制等,除了支付以上手续费和支付200元左右的电报费,另...
2024-10-12
比特币如何交易大陆银行卡,比特币交易记录如何查询
-
比特币如何交易大陆银行卡,比特币交易记录如何查询
4.查询比特币地址的交易记录 如果想要查询一个比特币地址的交易记录,可以在搜索页面中输入这个地址,点击搜索按钮
2024-10-09
什么是区块链稳定币?如何查询稳定币数据?
-
什么是区块链稳定币?如何查询稳定币数据?
稳定币是指价格波动性较低的加密货币,稳定币的价格与法定货币挂钩。例如USDT,即Tether发行的稳定币,与美元USD挂钩,1USDT约等于1美元。USDT占据...
2024-10-08
电影《反贪风暴3》里为什么古天乐选择了门罗币而不是比特币?
-
电影《反贪风暴3》里为什么古天乐选择了门罗币而不是比特币?
对一些极其注重隐私的人来说,比特币的匿名性并不出众。目前,已有一些机构(比如:Elliptic)通过跟踪、监测比特币链上交易数据来给用户画像以及资金的往来情况。...
2024-09-20
比特币如何收款?比特币收款安全吗?
-
比特币如何收款?比特币收款安全吗?
一、比特币如何收款 通过打开你的比特币钱包,可找到你的比特币地址
2024-09-12
一文了解比特币地址的类型和钱包的用法
-
一文了解比特币地址的类型和钱包的用法
在追求更好的技术时,一些附属的事物免不了会变得有些混乱。虽然比特币地址的格式化方法改变了许多,它实在不是普通人需要关心的东西。比特币在过去几年中使用了多种标准,...
2024-09-10