50个比特怎么生成10个码元_比特币的数字签名与安全保障
发布日期:2022-02-04 03:26:01 浏览次数:7 分类:技术文章

本文共 1261 字,大约阅读时间需要 4 分钟。

我们用支付宝或微信支付时,需要输入密码以验证身份,对于比特币,大家又要怎么做呢?如何证明你发到网上的比特币支付信息是你发出的呢?如何确保发出的信息没被篡改呢?这就涉及到一种叫数字签名的技术了。

首先,我们可以随机生成一个私钥,私钥也是一个 256 位的二进制数。我们可以抛 256次硬币,正面朝上记成 1,反面朝上记成 0,这样也能随机生成一个私钥。然后用椭圆曲线加密算法对私钥进行运算,生成公钥,再对公钥进行哈希运算,就得到了地址。椭圆曲线加密算法也是不可逆的,从公钥无法反推私钥,想试出私钥得试到天荒地老。此外,用椭圆曲线加密算法生成的公钥还可配合私钥,进行非对称加密。

3c95c091f28d8e15c76f80691ada3d4c.png

先来了解一下对称加密。对称加密中,加密解密的密钥都是一样的。比如有一条信息是 1234567,我们用密钥 9对它进行加密,1234567×9 就得到了密文 11111103,解密的时候 11111103÷9 就解密出了 1234567,加密解密的密钥都是 9。但在非对称加密中,加密解密的密钥则互不相同。

比特币里,私钥可以用来加密信息,而公钥可以用来解密该信息。比特币里没有“人”的概念,只有“地址”的概念,提到你有多少个比特币,其实是说你的地址上有多少个比特币。那要怎么才能控制你地址上的币呢?就要靠私钥。公钥和地址都可以公开,但私钥一定不能泄露。

私钥犹如地址对应的一支独一无二的签字笔,能签出独一无二的签名,证明你是对应地址的主人,所以我们也把该过程称为数字签名。用私钥签名后,此地址的付款信息才会被别人接受。如果丢了私钥,就无法使用地址上的币,尽管地址上的币都是清清楚楚地记录在比特币区块链账本上的。如果知道了你的私钥,他就可以转走你地址上的币,而你无可奈何。所以,说私钥安全性重于泰山也不为过。

不过,私钥并不像我们登录时输入的密码,它本身是可以完全不触网的,完全可以在离线状态下对付款信息签名(其实就是用私钥加密付款信息的哈希值),然后把付款信息和签名信息发送到网上即可,别人也无法从签名反推私钥,这是由椭圆曲线加密算法的性质决定的。比特币的“钱包”,存放的不是币而是私钥,所谓的“冷钱包”就是不联网的钱包,可以有效防御黑客盗取私钥。我们用比特币钱包时设置的密码,实际上起到的作用是授权调用私钥,而非是私钥本身。

369f480b961c68c6e41d4d4e05248c21.png

325fd0f723c798ff75aa4670b6cf7524.png

由于私钥、地址等信息用二进制表示非常长,比特币采取了一种叫Base58 的编码方式,将二进制数转换成 58 进制数表示,所以我们看到的地址之类信息就是一串大小写字母和数字的组合。为便于记忆及管理私钥,人们又设计出了助记词,助记词一般是 12个单词,出自有 2048 个常见单词的词库,助记词对应着根私钥,是根私钥一种易于记忆的形式。根私钥是随机生成的,它可以按一定规则,生成多个币种的私钥。这样,用助记词就可以统一管理多个币种的私钥,省去了很多麻烦。不要以为只有12个词就不安全,2048^12≈5.4×10^39是个天文数字,指望随机输入助记词碰巧试出一个有币的地址,是根本不可能的。

所以,还记得你的钱包助记词吗?

转载地址:https://blog.csdn.net/weixin_39626369/article/details/111623135 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql 自定义函数 if not exists_兄弟同心其利断金,细数那些让IF函数如虎添翼的小伙伴们~...
下一篇:python文件关闭出故障_python的官网下载安装教程

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月31日 03时08分44秒