之前的一期我们挖下了比特币加密的坑。谈到了“私钥”和“公钥”,却没有仔细讲过。那么在今天这期,我们就结合密码学的一些知识来聊一聊比特币的加密。 01 数字签名 日常生活中,假如我们想用支付宝来购买一些产品,我们可以选择刷脸或者使用指纹来认证这个支付动作是由我们自己发起的。如果是用银行卡来支付,我们则可以用签名来认证。但这些传统的认证方式在比特币的电子支付系统里并不安全的,因为无论是人脸、指纹还是签名都可以在计算机系统里进行拷贝,从而伪造身份进行验证。 于是为了解决这个问题,比特币的支付系统采用了“数字签名”。 02 “私钥”、“公钥”和“地址”都是什么? 了解比特币交易的人可能都听说过“私钥”、“公钥”和“地址”。但它们究竟是什么呢? 在中本聪的设计里,比特币用户在注册时,会生成一个32byte的随机数作为用户的“私钥”。这个“私钥”是要严格保密的(我们可以将它想象成我们银行账户的密码,绝对不可以泄露,不然账户里的比特币就全部遗失了)。 紧接着,利用这个“私钥”经过椭圆曲线加密算法便得到了我们的“公钥”。再接下来,通过4次哈希运算和1次Base58编码便得到了我们的“地址”(“地址”我们可以理解为我们银行的账户号码)。而“公钥”和“地址”则是可以对外公开的。 看到这里大家可能有些懵了,“椭圆曲线加密算法”、“哈希运算”和“Base58编码”都是些什么啊?其实大家不必纠结于此,只要记得“私钥”是我们注册账户时给的,“公钥”是由“私钥”生成的(且由“公钥”反推不到“私钥”),而“地址”则是由“公钥”生成的,就足够了。 “私钥”和“公钥”的用途如下: 1. “私钥”可以对信息进行加密 2. “公钥”则可对这个加密后的信息进行解密 这种加密和解密需要不同钥匙的加密方法则被称为“非对称加密”。 03 “私钥”、“公钥”和“地址”又是怎样运作的呢? 简单地讲,假如我们要给别人转比特币的话,我们就需要将我们的“公钥”和“地址”发给对方;假如我们要从对方处收款,我们则需将我们的“地址”发给付款方。这里值得注意的是,我们的“私钥”在交易过程中从来没有公开过。 接下来我们就用一个具体的例子来详细说明一下三者的运作过程。 我们假设甲要付给乙10个比特币。那么甲就要: 1. 甲要写一条“记录”:甲付给乙10个比特币。 2. 甲要对这个“记录”进行“数字摘要”,即运用SHA256运算将这个“记录”转换成一条“数字摘要”。 3. 甲要运用自己的“私钥”对这个“数字摘要”进行加密,形成“密码”。 这样子,这次交易的加密过程就告一段落了。 那么其他人要如何“认证”这个交易呢? 首先,甲就需要将“甲付给乙10个比特币”这条“记录”进行全网广播。广播的同时,甲也要将自己的“公钥”和第3步形成的“密码”告知全网。 当比特币矿工们得知这样的“记录”时,他们便可以自己将这条“记录”进行SHA256运算得到一个“数字摘要”。另一方面,矿工们也会用甲广播的“公钥”对甲发布的“密码”进行解密。解密后,矿工们便得到了另一个“数字摘要”。 假如这两次得到的“数字摘要”是一样的,那么比特币矿工们就可以对这条交易进行“认证”;反之,假如两次得到的“数字摘要”是不同的,比特币矿工们则会抛弃这条交易。这是因为,只有用甲的“私钥”才能将这个“数字摘要”生成这样一个特殊的“密码”;说这个“密码”特殊是因为它又可以被甲的“公钥”解密还原成原本的这个“数字摘要”。两次的“数字摘要”一样也就间接说明广播这条“记录”的人有甲的“私钥”,而“私钥”又是保密的,那么这个人就可以被认为是甲。 以上的过程就是我们之前提到的比特币的“数字签名”。而其实我们平时生活中用到的银行卡,好多时候也是利用这种方式进行电子签名。 本文作者:长衣貌
本文标题:数字货币入门:比特币的加密
本文链接:https://www.91pjz.com/zixun/3671.html
免责声明:文章不代表91联合立场,不构成任何投资建议,谨防风险。
版权声明:本文来源于91联合网站,转载请注明出处!侵权必究!