Bloomfilter-Bloom过滤器

简介

Bloom filter是一个数据结构,它可以用来判断某个元素是否在集合内,具有运行快速、内存占用小的特点。
而高效插入和查询的代价就是Bloom filter是一个基于概率的数据结构,它只能告诉我们一个元素绝对不在集合内或可能在集合内,而不能告诉我们一定在集合内。

构成

Bloom过滤器的实现是由⼀个可变⻓度(N)的二进制数组(N位⼆进制数构成⼀个位域)和数量可变(M)的一组哈希函数组成。这些哈希函数的输出值始终在1和N之间, 该数值与二进制数组相对应。 并且该函数为确定性函数, 也就是说任何一个使相同Bloom过滤器的节点通过该函数都能对特定输入得到同一个的结果。 Bloom过滤器的准确性和私密性能通过改变长度(N)和哈希函数的数量(M)来调节。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hiR83Ahi-1581394933433)(/images/Bloomfilter.png)]

注意

当Bloom过滤器中关键词增加时,它对应的某个哈希函数的输出值可能已经是1了,这种情况下,该位不会再次改变,所以会因为关键词的增加而导致准确性降低。

应用

我最近在做bitcoin中签名r的提取并作出比较,数据量非常大,所以我觉得使用Bloom filter会节省很大的时间,以后我要尝试一下。
今天学习到的一些东西:

  • verify transaction具体的过程,近期更新
  • Brainwallets存在安全隐患,它的私钥是根据一串用户指定的字符哈希而来,PPT中说到它使用的是math.Random(),它的范围是0-1中的小数,而比特币钱包中私钥的生成是选取的不可预测或者不可重复的1-2^256中的随机数,之后我也会更新一下有关bitcoin中私钥公钥地址之间是怎样生成的。
  • 发现了个新的东西:若k1-k2=c,且c已知,也可以造成泄漏,但是我还没看懂!看懂了再更新!

我的主页:Stride Max Zz欢迎大家访问!

发布了23 篇原创文章 · 获赞 1 · 访问量 1539

猜你喜欢

转载自blog.csdn.net/qq_35324057/article/details/104261149