btc私钥转公钥
㈠ 比特币的安全性到底有多高,你有怀疑比特币的安全性吗
近期,比特币突破新高,一枚比特币价值近26万人民币,一枚比特币换一辆特斯拉。对于刚入圈的新人来说,你肯定很关心比特币的安全问题。
那么,比特币安全吗?换句话说, 钱包里的比特币,容易被黑客盗走吗?
01
私钥、公钥、地址
就像银行取款、网银转账需要输入密码一样, 动用钱包里的比特币也需要密码,这个密码被称之为“私钥”。
与“私钥”对应的是“公钥”,“公钥”就像你的银行账户。 每个银行账户都有唯一的账户编号,也就是银行卡号。 在比特币网络中,这个银行卡号就是“地址”。 别人只要知道你的“银行卡号”(即地址),就可以给你转比特币了。
在银行,开户流程基本是“开设银行账户——给银行卡号——设置银行卡密码——开户成功”。但在区块链世界里,是先设置“密码”(私钥),再开设“银行账户”(公钥),最后给“银行卡号”(地址)。
如果你路上捡到了一张纸条,上面只写着银行卡密码,但没写银行卡号,即便这个银行卡密码是真的,你也无法取走相关账户里的钱。
但在区块链世界,你只要知道了别人的“银行卡密码”(私钥),就可以知道别人的“银行账户”(公钥)和“银行卡号”(地址),可以取走里面的币。
为什么会这样呢?
这是因为在区块链中,私钥通过加密生成公钥,公钥转换一下格式生成地址。也就是说, 私钥可以推导出公钥,公钥可以推导出地址。
02
反向推导?没门!
既然“私钥可以推导出公钥,公钥可以推导出地址”,动用账户里的比特币又必须输入“密码(私钥)”, 那黑客要窃取你钱包里的比特币,必须、也只需拿到“私钥”即可。
理论上,黑客有2种方法窃取你的私钥:
第一种方法并不可行,因为比特币采用的加密算法,“失之毫厘,差之千里!”。 输入的内容,稍稍变动哪怕一丁点的东西,加密后输出的结果和之前输出的结果也有 天壤之别 ,而且这些结果没有规律可循。
所以,这种加密算法是“单向的”、“不可逆的”,黑客无法通过输出(地址/公钥)推导出输入(私钥)。
03
暴力破解比特币私钥有多难?
既然第一种方法不可行,那第二种方法如何?在回答这个问题之前,我们先看下私钥是怎么产生的。
假设你抛硬币,正面朝上为1,反面朝上为0,连续抛256次,把每次抛的结果记录下来,再转换成十六进制数,就是一个比特币私钥。
What? 这么简单?这么任性?
没错,比特币的私钥就是通过程序“抛256次硬币”,随机生成的。所以, 比特币私钥的本质是256位二进制数 。
每次抛硬币,都有正反2面,所以抛256次,一共可以出现「2 x 2 x2 x 2……2 x 2x2」,即256个2相乘,也就是「2的256次方」种结果。 所以,比特币的私钥总数,理论上有「2的256次方」个。
注: 私钥总数的实际值比上面的理论值略低,因为有一小部分私钥不可用,但对总数影响微乎其微。
「2的256次方」是多大呢?它约等于「10的77次方」。那「10的77次方」又是多大呢?
如果我们居住的这个地球,海洋、岩石、地底下的岩浆全部用沙子来填充的话,整个地球的沙子数量大概是「10的30次方」。也就是说, 一个和地球一样大,全部由沙子组成的星球,需要用到「10的30次方」粒沙子。
「10的77次方」比「10的30次方」大「10的47次方」倍,整整47个0。在比一个地球的沙子数量还要多「10的47次方」倍的比特币私钥集里,一个一个地试,破解出某个地址对应的私钥,简直比大海捞针还难。
所以,即便黑客有超级计算机,都无法暴力破解比特币私钥。
这就是为什么很多人说 , “比特币第一次通过技术手段,保证了个人的私有财产神圣不可侵犯”。
04
如果比超级计算机还要厉害?
虽然未来的 科技 如何发展谁都无法准确预测,但如果有一天,人类发明了比超级计算机、量子计算机还要厉害的计算机,比特币私钥不就不安全了吗?
确实,很多人想知道量子计算机到底对比特币的安全性有没有威胁,如果有威胁,比特币有哪些措施可以应对。
鉴于这个问题不是三言两语能解释清楚,后面我们会单独开一篇文章,探讨这个问题,敬请期待。
05
结语
当然,安全问题不仅仅牵涉到技术问题,也牵涉到私钥的保存问题。 如果是因为自己私钥保存不当,或是电脑中了病毒,或是使用的钱包软件有漏洞或是有后门,导致私钥被黑客窃走,那钱包里的比特币安全性就无从谈起了。
但是,因为自己的失误导致私钥被盗,这锅不能让比特币背,不是吗?
所以,如果有人拿比特币被盗事件来质疑比特币的安全性,你会怎么回答他呢?
㈡ 知道私钥怎么提币
有了私钥,我们就可以使用椭圆曲线乘法这个单向加密函数产生一个公钥(K)。
有了公钥(K),我们就可以使用一个单向加密哈希函数生成比特币地址(A)。
H3
私钥
私钥就是一个随机选出的数字而已。一个比特币地址中的所有资金的控制取决于相应私钥的所有权和控制权。在比特币交易中,私钥用于生成支付比特币所必需的签名以证明资金的所有权。私钥必须始终保持机密,因为一旦被泄露给第三方,相当于该私钥保护之下的比特币也拱手相让了。私钥还必须进行备份,以防意外丢失,因为私钥一旦丢失就难以复原,其所保护的比特币也将永远丢失。
比特币私钥只是一个数字。你可以用硬币、铅笔和纸来随机生成你的私钥:掷硬币256次,用纸和笔记录正反面并转换为0和1,随机得到的256位二进制数字可作为比特币钱包的私钥。该私钥可进一步生成公钥。
H3
公钥
通过椭圆曲线算法可以从私钥计算得到公钥,这是不可逆转的过程:K = k * G。其中k是私钥,G是被称为生成点的常数点,而K是所得公钥。其反向运算,被称为“寻找离散对数”——已知公钥K来求出私钥k——是非常困难的,就像去试验所有可能的k值,即暴力搜索。
H3
比特币地址
比特币地址是一个由数字和字母组成的字符串,可以与任何想给你比特币的人分享。由公钥(一个同样由数字和字母组成的字符串)生成的比特币地址以数字“1”开头。下面是一个比特币地址的例子:
在交易中,比特币地址通常以收款方出现。如果把比特币交易比作一张支票,比特币地址就是收款人,也就是我们要写入收款人一栏的内容。一张支票的收款人可能是某个银行账户,也可能是某个公司、机构,甚至是现金支票。支票不需要指定一个特定的账户,而是用一个普通的名字作为收款人,这使它成为一种相当灵活的支付工具。与此类似,比特币地址的使用也使比特币交易变得很灵活。比特币地址可以代表一对公钥和私钥的所有者,也可以代表其它东西,比如“P2SH
(Pay-to-Script-Hash)”付款脚本。
㈢ 【区块链】比特币私钥、公钥、签名
在 了解区块链的基础名词概念 提到地址由字符和数字组成,但没有说明怎样产生的。银行卡号由银行核心系统生成,那比特币地址是通过什么生成的呢?看下图:
对于刚接触比特币的小白来说,看到这张图就蒙圈了,究竟什么是私钥、公钥,为什么生成个地址要这么麻烦吗?
现在请大家记住这句话: 私钥通过椭圆曲线相乘生成公钥,使用公钥不能导推出私钥;公钥通过哈希函数生成比特币地址,地址也无法导推出公钥 。
通过这么复杂算法才算出地址,那私钥和公钥只是为了生成地址吗?不是的,他们还有其他用途,我们先了解下私钥和公钥。
现在已经讲解地址、挖矿、工作量证明、算力、区块、区块链等等的概念,不知大家还有印象吗?如果忘记请温习这些概念,因为后续很多地方都会用到这些概念。明天讲解下区块链有哪些特点。
参考书籍:《精通比特币》
区块链知识专题:
比特币记账方式(区块链知识2)
了解块链的基础名词概念(区块链知识1)
㈣ 比特币压缩格式私钥你理解对了吗
压缩格式私钥: 大家看到压缩格式私钥这几个字是不是认为这个私钥是被压缩了的?其实我一开始是这么认为的,但随着对概念的深入学习与理解,我发现我理解错了,因为 私钥 本身并 不能被压缩 ,压缩格式私钥反而比非压缩格式私钥 多了1个字节 ,这多出来的1个字节是私钥被加了 后缀"01" ,用以表明该私钥是来自于一个较新版本的钱包,只能用于生成压缩格式的公钥。就是说该私钥只能用于生成压缩格式的公钥,其本身并不是压缩格式。反之,非压缩格式私钥是只能用于生成非压缩格式的公钥。具体转换关系如图所示:
从上面的定义和图示,大家可以看出压缩格式私钥这个词用得不太恰当,容易让人产生误解,让人误以为私钥是可以被压缩的,其实这种理解是不对的,如上述概念给出的,压缩格式私钥其实比非压缩格式私钥还多了1个字节,在非压缩格式私钥的基础上添加后缀"01"用以表示为压缩格式私钥,压缩格式私钥提出的作用是为了节省钱包存储空间而新研制出的一种私钥编码格式。
如果一个比特币钱包实现了压缩格式公钥,那么它将会在所有交易中使用该压格式缩公钥。钱包中的私钥将会被用来生成压缩格式公钥,压缩格式公钥然后被用来生成交易中的比特币地址。当从一个实现了压缩格式公钥的比特币钱包导出私钥时,钱包导入格式(WIF)将会被修改为WIF压缩格式,该格式将会在私钥的后面附加一个字节大小的后缀01。最终的Base58Check编码格式的私钥被称作WIF(“压缩”)私钥,以字母“K”或“L”开头。而以“5”开头的是从较老的钱包中以WIF(非压缩)格式导出的私钥。
表4-4展示了同样的私钥使用不同的WIF和WIF压缩格式编码。
Hex(十六进制):
WIF(非压缩私钥):
Hex-compressed(压缩十六进制):01
WIF-compressed(压缩私钥):
㈤ 比特币的地址、公钥、私钥,你都了解了吗
了解比特币,就不可避免地要掌握什么是比特币的地址、公钥、私钥,下面我们一个一个来解释。
地址,就好比是银行账(卡)号,在创建数字钱包后就会自动生成,简单来说,就是创建钱包的时候,先产生一对私钥和公钥,然后公钥通过一套算法生成地址,这个地址实质上是一串字符,比如。
像银行账(卡)号可以用来收款一样,比特币地址也可以用来接收比特币。
这个比特币地址不单单给你转币的人知道,连整个比特币网络的人都能查看,可以说,全球所有用户的地址都可以被任何人知道。为什么这样说呢?因为比特币本质就是一个大型的公开账本,所有交易对所有人都是可见的。而交易记录中包括了交易流水单号、发币人的发币地址、收币人地址、发币人的找零地址。
私钥,可以看作是银行密码,是一串很长的由钱包生成的随机数,比如, LBB9ZXMCJ。私钥是唯一能够证明你拥有的比特币是属于你的,也只有用私钥才能转账、交易和使用数字钱包里的比特币。
我们都知道了,银行密码绝对不能泄露给别人,私钥也一样,打死也不要告诉他人,否则你的比特币很容易就被转走。银行的钱被盗了,因为有国家监管和第三方信用,还有可能被追回,但比特币是去中心化的,没有第三方,自己的币只能自己负责看管,丢了,或被他人转走了,就永远拿不回来了。所以千万千万不要把私钥告诉他人,不要把私钥保存在手机或者电脑上,不要通过网络传输你的私钥,那怎么办?记住了,要用笔写在纸上,写两到三份分别放在不同的地方,保管好。
公钥,顾名思义,是可以公开的,也是像地址和私钥一样,是一串长长的字符。公钥由私钥通过椭圆曲线加密算法生成,通过私钥可以算出唯一一个公钥,但公钥不能逆向推导出私钥。
那到底比特币地址、公钥、私钥在交易中起什么作用的呢?
首先,钱包通过加密算法把私钥加密成字符串(也叫作签名),然后把这个字符串,和公钥一起写到交易信息里,再发给矿工。矿工收到信息后,就会将签名、公钥写入一个验证函数,如果得出的结果为“true”,那么这个交易会被确认为真实有效,就能被验证通过。而结果为“false”,则说明这笔交易存在问题,不能被验证通过。
通过以上浅显的文字,希望能帮到你对比特币的地址、公钥和私钥有一个初步的了解吧!感谢你的阅读!
㈥ 比特币地址是怎么产生的
比特币使用椭圆曲线算法生成公钥和私钥,选择的是secp256k1曲线。生成的公钥是33字节的大数,私钥是32字节的大数,钱包文件wallet.dat中直接保存了公钥和私钥。我们在接收和发送比特币时用到的比特币地址是公钥经过算法处理后得到的,具体过程是公钥先经过SHA-256算法处理得到32字节的哈希结果,再经过RIPEMED算法处理后得到20字节的摘要结果,再经过字符转换过程得到我们看到的地址。这个字符转换过程与私钥的字符转换过程完成相同,步骤是先把输入的内容(对于公钥就是20字节的摘要结果,对于私钥就是32字节的大数)增加版本号,经过连续两次SHA-256算法,取后一次哈希结果的前4字节作为校验码附在输入内容的后面,然后再经过Base58编码,得到字符串。乔曼特区块链专业站链乔教育在线是从事区块链相关培训,且获得教育部认证的区块链专业培训工作站。
㈦ 【猫说】打开比特币钱包的两把钥匙:私钥、公钥
如果不了解区块链,不知道公钥、私钥这些最基本的概念,拥有钱包对币圈新人来讲,就好像拿手指头去捅鳄鱼的脑袋,风险极高。此文谨献给币圈新朋友,帮助大家梳理比特币钱包的基本常识。
区块链观察网在 《区块链是什么》 一文中提到过,在区块链世界里,每个人都拥有两把独一无二的虚拟钥匙:公钥和私钥。
“公钥”,可以简单理解为银行卡,这是可以发给交易对方看的,银行卡号则相当于比特币转账中要用到的“地址”。
讲得专业一点,公钥就是一个65字节的字符串,多长呢?130个字母和数字堆在一起。公钥太长的话,第一交易起来忒麻烦,第二干嘛非得暴露公钥的真实内容呢,这就好像把自己的银行卡拿出来到处给人看。因此,我们现在看到的地址,就是经过摘要算法生成的、更短一点的公钥。
对方知道你的地址才能给你打钱;而且,任何人有了你的地址,都能在Blockchain.info官网查询这个钱包地址交易了多少次(No. Transactions),收过多少个比特币(Total Received),以及钱包里还剩下多少个比特币(Final Balance),如下图:
“私钥”,就像打死不能告诉别人的银行卡密码。它是一串256位的随机数。因为让非IT用户去记住这个满屏0 和 1的二进制私钥是特别不人道的事儿,所以对这一大串私钥进行了处理,最后私钥就以5 / K / L 开头的字符串呈现在我们面前。
公钥、私钥、地址之间的关系是:
1)私钥 → 公钥 → 地址
私钥生成唯一对应的公钥,公钥再生成唯一对应的地址;
2)私钥加密,公钥解密
也就是说,A使用私钥对交易信息进行加密(数字签名),B则使用A的公钥对这个数字签名进行解密。
其中,私钥是极度私密的东西。如果你把私钥发给别人,现在就开始写一部长篇小说吧,名字都帮你想好了,就叫《永别了,比特币》。
如果是李笑来老师(网传拥有数十万个BTC)这类币圈大佬,强烈建议使用冷钱包(离线钱包),分开储存;电视里的富豪在银行有自己的保险箱,有条件的话也可以参考。
当时,上述方法是安全系数最高的做法。但作为韭菜接班人,暂且假设我们最初只用闲置资金、持有少量的比特币,比如,小于5个。那么,动辄上千成本、操作复杂的冷钱包就有点杀鸡用牛刀了;因此,区块链观察网把选择范围限定在交易所和轻钱包2项:
在交易平台上买了(极少量)比特币,可以先不提出来,继续存在交易所。这种方式最适合币圈新手。在没有深入了解每种加密货币背后的故事之前,鲜嫩的我们总是充满了好奇,而放在交易所的比特币,可以直接进行币币交易,交易简单快捷,不用经数字钱包导来导去;另一方面,平台上币种齐全,可以满足我们的尝鲜心理,方便随时小试牛刀。
而且像火币、币安(已被墙)这些大型交易所,不仅安全等级比某些专为收割韭菜而生的小平台高很多,而且操作简单,很快就能上手,只需保管好自己的账号、密码就行了(再安全一级的话,开启谷歌二次验证),其他的就交给平台。
值得注意的是,存在交易所上的资产并不完全属于自己,更确切地说是借给平台的,我们在资产那一栏看到的数字,相当于平台向我们借钱而打的白条。此外,交易平台本身不是去中心化的,如果安全措施不到位,用户的账号密码有可能被黑客拿到。
轻钱包是相对于“全节点”钱包来说的。
全节点钱包,比如 Bitcoin-Core(核心钱包),运行时需要同步所有区块链数据,占用相当大内存空间(目前至少50GB以上),完全去中心化;
轻钱包虽然也依赖比特币网络上其他全节点,但其仅仅同步跟自己有关的交易数据,基本实现去中心化的同时,也提升了用户体验。
根据不同的设备类型,我们把轻钱包分为:
1)PC钱包:适用于电脑桌面操作系统(如Windows/MacOS/Linus);
2)手机钱包:适用于安卓、iOS智能手机,比如比太钱包(以太也有PC端);
3)网页钱包:通过浏览器访问,比如上文提过的blockchain网页版。
轻钱包操作比较简单,一般是免费获取。申请钱包的时候,系统会生成一个私钥。准备敲黑板!
1)不要截图、拍照存在手机里;
2)不要把私钥信息发给任何人;
3)最好手写(几份)抄下,藏在你觉得最安全的地方。
总之一句话,谁掌握了钱包的私钥,谁就拥有钱包的绝对控制权。私钥只要掌握在你的手里,比特币就绝不会丢。
最后多说几句,作为普通投资者,我们需要做的并不多:
1)走点心,不要把手机弄丢了,毕竟丢了对手机里的比特币钱包有风险;
2)不要手痒删掉设备上的钱包应用,除非你决定再也不用这个钱包了,否则后期很麻烦;
3)设置复杂的密码(原因见第1点),并用心去记牢,这是私钥弄丢以后留的一手。
对于记不住密码,又懒得科学备份私钥的朋友,咱还是把钱存在银行里吧。
㈧ 入门科普:比特币的私钥、公钥和地址是什么
上一篇,我们讲到了币圈要注意防范传销、洗钱等一类的骗局,保护好自己的资产。这一篇,我要告诉大家,进行比特币交易时,都会用到的私钥、公钥与地址,如果你还不了解它们的重要性,随便交易,很容易弄丢自己的资产。那什么是私钥、公钥与地址?三者之间有着什么样的关系呢?
01
私钥
1.导出:
创建钱包后,输入密码可以导出私钥,私钥由很长的字符串组成,且是随机生成的, 一个地址只有一个私钥。
2.用途:
用于控制交易时的签名,拥有私钥才能控制账户的资金,相当于银行账户的交易密码,用来解密公钥加密的信息。
3.注意事项:
私钥是用来证明这笔交易的发起人确实是比特币的所有者。所以 私钥一定不能曝光,私钥一旦泄露,你的比特币将会有被盗的风险。 用户必须保管好私钥,防止泄露或丢失。
02
公钥
1.导出:
公钥是由私钥通过算法生成的,使用了椭圆曲线加密, 通过私钥可以计算出唯一的公钥。
2.用途:
公钥是用来验证交易的签名,一个私钥签名的数据,只有对应的公钥才能对其进行验证,公钥相当于银行账户,公开后无风险。
03
地址
1.导出:
地址由公钥生成的,使用了哈希运算。创建钱包后会生成一个以“0x” 开头的 42 位字符串,这个字符串就是钱包地址,一个钱包对应一个钱包地址, 地址唯一且不能修改,也就是说一个钱包中所有代币的转账收款地址都是一样的。
2.用途:
由于公钥太长,在交易中不方便使用,所以就有了地址,地址是由公钥生成的,地址相当于银行卡号,用来发送和接收比特币。
3.注意事项:
平台上不同代币的转账收款地址一般都不同,因此,转币到交易平台前一定要确认好地址。
总结
私钥 → 公钥 → 钱包地址 (不可逆)
私钥用来签名交易,公钥用来验证私钥签名的交易,地址用来收款。
公钥、私钥以及地址都在比特币交易中起到了不同的作用,所以才能顺利的完成一笔数字货币的交易。 所以用户必须好好保存,防止泄露重要信息。
㈨ bitcoin私钥是如何产生的
比特币地址和私钥是怎样生成的?比特币使用椭圆曲线算法生成公钥和私钥,选择的是secp256k1曲线。生成的公钥是33字节的大数,私钥是32字节的大数,钱包文件wallet.dat中直接保存了公钥和私钥。我们在接收和发送比特币时用到的比特币地址是公钥经过算法处理后得到的,具体过程是公钥先经过SHA-256算法处理得到32字节的哈希结果,再经过RIPEMED算法处理后得到20字节的摘要结果,再经过字符转换过程得到我们看到的地址。这个字符转换过程与私钥的字符转换过程完成相同,步骤是先把输入的内容(对于公钥就是20字节的摘要结果,对于私钥就是32字节的大数)增加版本号,经过连续两次SHA-256算法,取后一次哈希结果的前4字节作为校验码附在输入内容的后面,然后再经过Base58编码,得到字符串。