区块链网站|NFTS 比特币地址 比特币昵称地址

比特币昵称地址

广告位

比特币靓号地址

昵称地址包含可读信息的有效比特币地址。例如,1 lovebzzd 72 puxlzckyatgymk 5 vynr 33包含基数为58的字母love。美丽的地址需要通过数十亿个候选私钥来生成和测试,直到一个私钥可以生成一个具有所需模式的比特币地址。虽然有一些优化的昵称生成算法,但这种方法必须涉及随机选择一个私钥,生成一个公钥,然后生成一个比特币地址,并检查它是否与所需的昵称模式匹配,并重复数十亿次,直到找到匹配。

一旦找到匹配所需模式的昵称地址,所有者就可以像使用其他地址一样使用这个昵称地址的私钥。漂亮的地址并不比其他地址更安全。它们依赖与其他地址相同的ECC和SHA。你不可能比任何其他地址更容易得到一个美丽符号开头的私钥。

在第一章中,我们介绍了尤金妮亚,一位在菲律宾工作的儿童慈善机构的主管。我们假设Eugenia组织了一次比特币集资活动,希望用昵称比特币地址来宣布集资活动。Eugenia将创建一个以1Kids开头的昵称地址,以促进儿童慈善筹款。让我们看看这个昵称地址是如何产生的,以及这个昵称地址对Eugenia慈善募捐的安全性意味着什么。

要生成4.5.3.1地址,我们必须认识到,使用Base58字母表中的简单符号来表示比特币地址非常重要。搜索“1kids”开头的模式我们会找到从1kids 111111111111111111111111到1kids的地址表4-11显示了这些带有前缀“1kids”的地址。

表4-11“1个孩子”昵称的范围

1 kids 11111111111111111111111111

1Kidszzzzzzzzzzzzzzzzzzzzzzzzzzzzz

我们就以前缀“1Kids”为数字吧。我们可以看看这个前缀在比特币地址中的出现频率。如果是性能一般,没有任何特殊硬件的台式电脑,每秒可以发现10万个左右的按键。

表4-12昵称出现的频率(1KidsCharity)及其生成所需的时间

长度

地址前缀

概率;可能性

平均生成时间

一个

1K

1/58

1毫秒

2

1Ki

1/3,364

50毫秒

1个id

1/(195*103)

两秒钟

1个孩子

1/(11*106)

1分钟

1KidsC

1/(656*106)

1小时

1儿童学校

1/(38*109)

2天

1KidsCha

1/(2.2*1012)

三月至四月

1个孩子

1/(128*1012)

13至18岁

1KidsChari

1/(7*1015)

八百年了

10

1儿童沙里

1/(400*1015)

46000年

11

1儿童福利

1/(23*1018)

五十万年。

正如你所看到的,Eugenia不会很快创建一个以“1KidsCharity”开头的好地址,尽管她有数千台计算机同时进行计算。每增加一个字符,计算难度会增加58倍。超过七个字符的搜索模式通常需要特殊的硬件才能找到,例如带有用户定制的多个图形处理单元(GPU)的桌面设备。那些通常无法在比特币挖矿中继续盈利的钻机,又被赋予了寻找昵称地址的任务。用GPU系统搜索美名的速度比用一般CPU快很多个数量级。

另一种寻找昵称地址的方法是将工作外包给一个矿池的昵称矿工,比如昵称矿池。矿池是一种服务,允许那些GPU硬件通过为其他人寻找昵称地址来获得比特币。对于小额账单,Eugenia可以将搜索模式外包出去,为7个字符的地址找到工作,几个小时内就可以得到结果,而不是使用一个CPU搜索几个月的结果。

生成一个漂亮的地址是一个蛮力过程:尝试一个随机键,检查得到的地址是否与期望的模式匹配,并重复这个过程,直到成功找到它。例4-8是一个昵称挖掘器的例子。c程序用于查找昵称地址。这个例子适用于我们在第56页“其他替代客户端、数据库、工具包”一节中介绍的libbitcoin库。

示例4-8为美丽的名字挖掘程序

#include //我们要搜索的字符串const STD:string search=' 1kid '//生成随机密钥。一个随机32字节。BC:EC _ secret随机_ secret(STD:default _ random _ engine引擎);//从一个欧共体的秘密。STD:string bit coin _ address(const BC:EC _ secret secret)中提取比特币地址;//与搜索字符串进行不区分大小写的比较。bool match _ found(const STD:string地址);int main(){ STD:random _ device random;标准:默认_随机_引擎引擎(random());//连续循环.while (true) { //生成一个随机秘密BC:EC _ secret secret=random _ secret(引擎);//获取地址STD:string address=bit coin _ address(secret);//它与我们的搜索字符串匹配吗?(1 kid)if(match _ found(address)){//成功!' std:cout '找到虚名地址!'地址STD:endl;STD:cout ' Secret:' BC:encode _ hex(Secret)STD:endl;返回0;} } //应该永远到不了这里!返回0;} BC:EC _ secret随机_ secret(STD:default _ random _ engine引擎){ //创建新秘密.BC:EC _ secret secret;//遍历每个字节,设置一个随机值.for(uint 8 _ t byte:secret)byte=engine()% STD:numeric _ limits:max();//返回结果。返回秘密;} STD:string bit coin _ address(const BC:EC _ secret secret){//将秘密转换为公共密钥.BC:EC _ point pubkey=BC:secret _ to _ public _ key(secret);//最后创建地址BC:payment _ address payaddr;bc:set_public_key(payaddr,pubkey);//返回编码形式。返回payaddr。encoded();} bool match _ found(const STD:string地址){ auto addr _ it=address。begin();//循环搜索字符串,将其与所提供地址的小写//字符进行比较. for(auto it=search。begin();它!=搜索。end();it,addr_it) if (*it!=std:tolower(*addr_it))返回false//已到达搜索字符串的末尾,因此地址匹配。返回真实}示例程序需要用C编译器链接解放运动比特币库(此库需要提前装入该系统)进行编译。直接执行虚荣矿工的可执行文件(不用参数,参见例4-9),它就会尝试碰撞以\” 1kid \”开头的比特币地址。

例4-9 编译并运行虚荣矿工程序示例

$ #用虚荣挖掘者CPP $(pkg-config-cflags-libs lib比特币)$ #编译代码运行示例$。/虚荣矿工找到了虚荣地址!1 kidzg 4 mxmovzryzrj 8 tk 81 oqrhbz 46 yt秘密:57cc 268 a 05 f 83 a 23 AC 9d 930 BC 8565 BAC 4 e 277055 f 4794 CBD 1a 39 e 5e 71 c 038 f 3 f $ #再运行一次,结果不同$。/虚荣矿工找到了虚荣地址!1 kid xr 3 wsmmzzouwxibkfwtys 5 pau 8 tufnsecret:7 f 65 bbbb 6d 8 caae 74 a 0 c 6 a 0d 2d 7 b5 c 6663d 71 b 60337299 a 1 a2 cf 34 c 04 B2 a 623 #使用\”时间\”来查看找到一个结果需要多长时间$时间./虚荣矿工找到了虚荣地址!1 kidpwhkggrqwd 5 P5 tangfdyfwp 5 ycesxmsecret:2a 802 e 7a 53d 8 aa 237 CD 059377 b 616d 2 BF CFA 4b 0140 BC 85 fa 008 f 2d 3d 4b 225349 real 0m 8.868 suser 0m 8.828 ssys 0m 0.035s正如我们运行Unix操作系统操作系统命令时间所测出的运行时间所示,示例代码要花几秒钟来找出匹配\”孩子\”三个字符模板的结果。读者们可以在源代码中改变搜索这一搜索模板,看一看如果是四个字符或者五个字符的搜索模板需要花多久时间!

4.5.3.2 靓号地址安全性靓号地址既可以增加、也可以削弱安全措施,它们着实是一把双刃剑。用于改善安全性时,一个独特的地址使对手难以使用他们自己的地址替代你的地址,以欺骗你的顾客支付他们的账单。不幸的是,靓号地址也可能使得任何人都能创建一个类似于随机地址的地址,甚至另一个靓号地址,从而欺骗你的客户。

尤金伲亚(女子名)可以让捐款人捐款到她宣布的一个随机生成地址(例如:1j 7 MDG 5 rbqyuhenydx 39 wvwk 7 fslpeoxzy)。或者她可以生成一个以\” 1个孩子\”开头的靓号地址以显得更独特。

在这两种情况下,使用单个固定地址(而不是为每笔捐款使用独立的动态地址)的风险之一是,小偷可能会侵入你的网站,用自己的网站替换你的网站,从而将捐款转移到自己身上。如果你在不同的地方发布你的捐款地址,你的用户可以在付款前直观地检查它,以确保这个地址与你在网站、邮件和传单上看到的地址相同。在随机地址1j7mdg 5 rbqyuhenydx 39 wvwk 7 fslpeoxzy的情况下,普通用户可能只是检查前几个字符“1j 7 MDG”就认为地址匹配了。使用昵称地址生成器,那些想要通过替换相似地址来窃取的人可以快速生成匹配前几个字符的地址,如表4-13所示。

表4-13生成与随机地址匹配的多个昵称

原始随机地址

1j 7 MDG 5 rbqyuhenydx 39 wvwk 7 fslpeoxzy

4位字符匹配

1j 7m D1 qqu 4 lptcbeths 2 zoylv 5d 6 dsh hey

5位字符匹配

1j 7 MDG yqynd 4 ya 3 uecq 31 q 7 sqrmxw 2 z6 n

6位字符匹配

1j 7 MDG 5 wxgenmwyjp 9 Xu GHG 5 krzu 99 bbcx

漂亮的地址会增加安全感吗?如果Eugenia生成1kids33 q 44 erfpexrmdsz 7 ze qg 2g feszen的昵称地址,用户可能会在上面看到昵称模式的字母和一些字符,比如地址部分的1 kids 33。这将迫使攻击者生成至少6个字母匹配的昵称地址(比以前多2个字符),这将比Eugenia多花费3364倍的昵称模式。本质上,Eugenia的努力(或昵称池的努力)迫使攻击者生成一个更长的昵称模式。如果Eugenia支付矿池生成8个字符的昵称地址,攻击者将被逼到10个字符的境地,这将是一台个人电脑,即使是昂贵的定制昵称挖掘机或昵称池也无法生成。Eugenia能承受的是攻击者所不能承受的,尤其是诈骗的报酬不足以支付生成昵称地址的成本。

#数字货币# #欧亿OKEx##比特币[超级对话] #

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/btb/qianbao/24595.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部