比特币的公钥、私钥和地址之间,涉及的都是加密运算,通过单向加密计算的方式,确保其交易体系的安全。
三者之间的关系,简单说就是:私钥生成公钥,公钥生成地址,一般来说,地址就是你的账户,私钥就是你的账户密码(如果你可以反驳这句话,那也说明你的了解已经比较深入了,因为属于科普贴,复杂的情况暂且不谈)。
那么具体又是怎样的呢?
私钥的生成
得私钥者得比特币,私钥决定了你对某个地址上的比特币的控制权,它被用于生成你的地址和对交易数据进行签名。所以私钥必须妥善保存。
本质上,私钥是一串随机产生的数字,你甚至可以通过抛硬币的方式生成,将抛硬币的正反面作为0和1,生成256位二进制随机数,从而作为你的私钥。越随机,越安全。
从私钥生成公钥,公钥再生成地址
通过椭圆曲线算法(SECP256K1)可以从私钥计算得到公钥,这个过程是不可逆加密计算,即只可以正向计算,不可以反向计算,你几乎无法通过公钥反向推算出私钥。
公钥再经过一系列的加密运算,才会生成地址:由公钥通过SHA256和RIPEMD160(单向加密算法)可以计算得到 公钥哈希, 将一个字节的地址版本号连接到公钥哈希头部(对于比特币网络的pubkey地址,这一字节为“0”),然后对其进行两次SHA256运算,将结果的前4字节作为公钥哈希的校验值,连接在其尾部,再将计算的结果通过BASE58编码即可得到最终的钱包地址。
三者之间的关系
私钥通过不可逆的单向加密算法生成了公钥,公钥通过不可逆单向加密算法生成了公钥哈希,再经过编码得到了钱包地址。
这个过程中多次使用单向加密算法,是为了确保私钥的安全,你可以放心的使用暴露地址,但私钥不会因此而受到威胁。
小结&延伸
私钥能够生成你的公钥和地址,同时又有对交易签名的权限,所以是最高级别秘钥,需要妥善安全保存,对于设计钱包体系来说,要考虑到如何在安全环境下存储并调用私钥。
单向加密算法是密码学中只能单向运算的加密方式,只能正向运算,几乎无法倒推,是用于确保秘钥体系的安全。
这里说的是比特币的秘钥体系,其实其他类的区块链项目,涉及到秘钥体系的都大同小异,可以举一反三去理解。