什么是K-匿名?
K-匿名(K-Anonymity)是Samarati和Sweeney在1998年提出的技术,该技术可以保证存贮在发布数据集中的每条个体记录对于敏感属性不能与其他的K-1个个体相分辨,即K-匿名机制要求同一个准标识符起码要有K条记录,因此观察者未能通过准标识符联接记录。
K-匿名的具体使用如下:隐私数据脱敏的第一步一般是对所有标识符列进行移除或是脱敏处理,使得攻击者难以直接标示用户。但是攻击者还是有可能通过多个准标示列的属性值辨识到个人。攻击者可能通过(例如晓得某个人的邮编,生日,性别等)包含个人信息的开放数据库获得特定个人的准标识列属性值,并与大数据平台数据进行匹配,从而得到特定个人的敏感信息。为了防止此类情况的发生,通常也须要对准标识列进行脱敏处理,如数据泛化等。例如下所示:
输入:
输出:
经过泛化后,有多条纪录的准标示列属性值相同。所有准标示列属性值相同的行的集合被称为相等集。
K-匿名的缺陷:
K-匿名计数并不关心敏感信息,只关心QI(准标志符),其对敏感信息功击没有任何更改,这样会存在问题,假设得到的分组中所有记录的某一信息是一样的,则假如定位到该分组,就可以晓得该分组中该信息,这样就丧失隐私了,因为只要晓得是否属于这个分组能够晓得该信息,这是一个缺陷。
算法实现
如果想实现上图输出的疗效,只需做一个排序输出即可。由于时间缘由,只实现了K-匿名算法
#include
#define NUM 50 //总容量
//K—匿名算法
//输入数据,使用数组存值
//进行泛化处理
void showMenu(){
std::cout
std::cout<<"name\t\tsex\t\tage\t\tzip\t\tdisease"<>num;
4af0dc0dab53f2d283b8f455af5af776
//写入数据
for (int i = 0; i < num; ++i) {
//依次写入姓名 性别 年龄 编号 疾病
std::cout<<"请依次写入第"<>Name[i]>>Sex[i]>>Age[i]>>Zip[i]>>Disease[i];
if(i+1 == num){
std::cout<<"输入完成!"<>select;
switch (select) {
case 1:
std::cout << "name\t\tsex\t\tage\t\tzip\t\tdisease" << std::endl;
//显示写入数据内容
for (int i = 0; i < num; ++i) {
//输出
std::cout<6c3c28e24b25ff06c7b717b73f6f8455
return 0;
}
教程&演示:
首先,你须要将我们代码部份copy到你的本地编译器中。然后直接编译运行即可。需要注意的是直接按照步骤逐渐进行输入即可正常运行。需要注意以下几点事项:
1.输入的患者编号要6位
2.由于期终,时间比较紧张,对于好多细节方面还不健全。大家多多担待
3.实现的源码我改变了链表的数据类型,所以对于排序过程的实现,可以在我源代码上更改。但不能直接加入排序的步骤。
1.写入数据:
2. 显示输入:
3.泛化处理:
4.退出程序:
如果文章对你有帮助的话,请多多支持哦!
创作不易,为了作者能有更好的作品。希望你们能多多点赞+评论+收藏!!!!!