垃圾邮件bloom filter过滤算法浅谈

垃圾邮件bloom filter过滤算法浅谈

ID:6236836

大小:26.50 KB

页数:5页

时间:2018-01-07

垃圾邮件bloom filter过滤算法浅谈_第1页
垃圾邮件bloom filter过滤算法浅谈_第2页
垃圾邮件bloom filter过滤算法浅谈_第3页
垃圾邮件bloom filter过滤算法浅谈_第4页
垃圾邮件bloom filter过滤算法浅谈_第5页
资源描述:

《垃圾邮件bloom filter过滤算法浅谈》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、垃圾邮件BloomFilter过滤算法浅谈  【摘要】本课题在对电子邮件原理和垃圾邮件的过滤方法进行分析研究的基础上,设计了一种垃圾邮件过滤算法,并实现了垃圾邮件过滤系统。这个系统基于BloomFilter的LOAF技术,通过LOAF把收到的邮件初步分为从高到低的1,2,3三个可信度等级,1级表示是自己的好友发来的邮件,2级表示是跟自己好友有联系的人发来的邮件,1、2级邮件不可能是垃圾邮件。本文主要介绍了BloomFilter的基本原理及其实现。BloomFilter是一种新的高效率的数据机构,是实现LOAF的基础。【关键词】垃圾邮件过滤;BloomFilter;LO

2、AF;中图分类号:F618.1文献标识码:A文章编号:系统设计思路随着垃圾邮件的泛滥,各种垃圾邮件过滤技术不断的出现和发展。通过对部分过滤技术的研究,我们设计并实现了这个系统。接下来我们看看系统工作的整个流程。这个系统包括两部分,邮件发送端和邮件接收端。发送端的功能包括发送邮件、读取显示通讯录、添加联系人等。接收端的功能包括接收邮件、读取显示通讯录、邮件过滤、添加功能等。5BloomFilter实现的主要函数1BFMembershipQuery()函数BFMembershipQuery()函数的功能就是判断一个元素是不是在BloomFilter数组中,如果是则返回1;

3、不是则返回0。需要传递三个参数为:BloomFilter数组bf、带查询的元素element和元素长度length。首先,对element产生一个SHA1哈希函数地址。其次,与bf中的对应位进行比较。函数代码如下:intBFMembershipQuery(BloomFilter*bf,constunsignedchar*element,unsignedlength){intresult=1,i;//产生SHA1地址unsigned*hashAddress=(unsigned*)malloc(sizeof(unsigned)*bf->Hash_Num);if(!Gene

4、rateHashAddress(element,length,bf->Length,bf->Hash_Num,hashAddress)){free(hashAddress);return0;}for(i=0;iHash_Num;i++)//对应位比较{if(!GetBits((unsigned*)bf->Bit_Array,hashAddress[i],1)){5result=0;break;}}free(hashAddress);returnresult;}2BFInsert()函数BFInsert()函数实现把一个元素插入BloomFilter数组中,同样需要传递

5、BloomFilter数组bf、带查询的元素element和元素长度length三个参数。插入过程也比较简单,首先,对element产生一个哈希地址,然后把在bf中对应位置1,这样就完成了插入的操作,函数实现代码如下:intBFInsert(BloomFilter*bf,constunsignedchar*element,unsignedlength){inti;//产生SHA1地址unsigned*hashAddress=(unsigned*)malloc(sizeof(unsigned)*bf->Hash_Num);if(!GenerateHashAddress(

6、element,length,bf->Length,bf->Hash_Num,hashAddress))5{free(hashAddress);return0;}for(i=0;iHash_Num;i++)//对应位置1SetBits((unsigned*)bf->Bit_Array,hashAddress[i],1,1);free(hashAddress);return1;}3Main()主函数主函数的功能就是实现BloomFilter的初始化、判断以及插入。在初始化这一步骤中,我们要设定BloomFilter数组的大小numOfArray,以及哈希函数的个数num

7、OfHash。其中numOfArray必须是2的整数次幂且,numOfArray>8,而numOfHash则根据实际情况设定[1]。这个例子中我们取numOfArray=1024,numOfHash=7。判断元素element可以是字符串,汉字,也可以是特殊符号,用数组存储,根据一般性,限定数组长度为20。首先,我们要对BloomFilter数组进行初始化,并加载测试数据,数据由另外的一个文档test.txt读入。5初始化BloomFilter数组后,加载测试数据,并输出当前的BloomFilter数组。下面一段代码是主函数中的一个循环,在判断的同时

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。