本文来说说比特币交易地址公钥,讲讲它生成原理与私钥的关系

本文来说说比特币交易地址公钥,讲讲它生成原理与私钥的关系。下面就一起来看看吧。

一、比特币交易地址公钥

比特币运用了加密技术,在非对称密码学里面,密钥是成对出现的,即私钥和公钥。私钥用于数字签名,确认资金的所有权,类似于银行交易中的“签名”,有了私钥就有了控制资金的权利,公钥用于交易中的收款确认,类似于银行交易中的“收款方”。

一个私钥可以有一个压缩的公钥,和一个未压缩的公钥,每个公钥都会生成一个地址,这样一来私钥就会有两个地址,分别为:1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEz未压缩公钥和压缩公钥1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV,这两个地址都是这一个私钥的地址,每个地址上面的钱都可以用这个私钥花费。

二、比特币公钥生成

通过椭圆曲线算法可以由私钥生成公钥,该过程是不可逆的过程:K(公钥)=k(私钥)*G(常数点)。其反向运算,被称为“寻找离散对数”–已知公钥K来求出私钥k–是极其困难的。椭圆曲线算法是一种基于离散对数问题的非对称加密法,其数学运算是单向的,所以私钥可以转换成公钥,但公钥不能转换回私钥,将上面的结果转换后得到如下结果(十六进制):

(0ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6.f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d)

将公钥合并成为十六进制数,压缩公钥可以大大节省公钥所占空间(减少256bits),是比特币客户端当前的默认格式,并且也兼容非压缩公钥,未压缩(前缀04.将Gx,Gy拼接)

040ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6f2ee1b72d9b9a57706e5de72acc1378f92269086c4964c073593bf92d28c647d压缩(y为偶数前缀02.y为奇数前缀03.仅保留Gx,Gy可通过Gx计算)

030ba1ba3b8d8f7bd4a70828ec0e749dd26ee4cdd18d058c880afa121fad60e5b6。以上这就是计算公钥的过程,主要就是对私钥进行了椭圆曲线运算。在之前的钱包软件中通常会使用完整公钥,而现在市场上的大部分钱包都开始使用压缩公钥了。

三、比特币公钥和私钥

比特币系统中,我们用公钥加密算法来创建密钥对,用于控制比特币的获取。密钥对包括一个私钥和由其衍生出来的位移的公钥、公钥用于接受比特币,而私钥用于比特币支付时的交易签名。公钥和私钥之间的数学关系,使得私钥可以用于生成特定的签名。此签名可以在不泄露私钥的同时,对私钥进行验证。在支付比特币时,比特币的持有者只需要在交易中提交公钥和签名即可。比特币中的所有人,都可以通过所提交的公钥和签名进行验证,并确认该交易是否有效。

私钥可以理解为一个随机数,比特币地址中资金的控制取决于相应私钥的控制权,比特币交易中,私钥用于生成支付比特币所必需的签名以证明对资金的所有权。

比特币私钥只是一个数字,一个256位的二进制数字组成。可以通过投掷硬币256次,将硬币的真反面转换为0和1,由此得到256位的二进制数字,可以作为比特币钱包的私钥。从给一个随机数生成私钥是生成密钥的第一步也是最重要的一步。比特币私钥的本质是在1-2^256之间选一个数字。更准确的将,私钥是1和n-1之间的任何数字,其中n是一个常数(n=1.158*10^77,略小于2^256). 比特币软件使用操作系统底层的随机数生成器来产生256位的熵(随机性)。 从编程的角度来看,一般是通过在一个密码学安全的随机源中取出一长串随机字节,对其使用SHA256哈希算法进行运算,这样就可以方便地产生一个256位的数字。如果运算结果小于n-1,就有了一个合适的私钥。

四、比特币地址和私钥

比特币的所有权是通过私钥和地址来确立的。私钥就类似于银行账户密码,而比特币地址就类似于银行账号。新建一个比特币地址不像银行开户那样需要身份证,用手机或电脑下载一个比特币钱包就可以生成比特币地址,一个钱包可以生成多个比特币地址。生成比特币地址的同时就会有一个私钥被生成,作为比特币用户,我们很少会直接看到私钥,一般情况下,私钥是被存储在钱包文件里,由钱包软件进行管理。使用的时候只需要将比特币地址发送给交易对象,然后通过钱包软件完成私钥签名来构建一笔交易,然后通过网络去广播交易,然后填写要支付的金额。接着输入设定好的密码,就可以发送交易了。

五、小结

比特币私钥、公钥和地址组成了比特币的交易系统。使用时保管好自己的私钥,安全的进行比特币交易吧。