差分隐私 JAVA版实现

差分隐私 JAVA版实现

差分隐私(Differential Privacy)是Dwork[3] 在2006年针对数据库的隐私泄露问题提出的一种新的隐私定义。主要是通过使用随机噪声来确保,查询请求公开可见信息的结果,并不会泄露个体的隐私信息,即提供一种当从统计数据库查询时,最大化数据查询的准确性,同时最大限度减少识别其记录的机会,简单来说,就是保留统计学特征的前提下去除个体特征以保护用户隐私。
百度出来的所有差分隐私都只是对差分隐私名词的解决,并没有可以实际使用的代码,本人出于对算法的好奇,花了好几天的时间整理,同时也参考了很多其它的例子,并整理了当前算法的java版本,可直接使用到项目当中。

关键代码,如下

  private static ImmutableSortedMap<Integer, Integer> getPrivateCounts(Collection<Visit> visits) {
    Map<Integer, Count> dpCounts = new HashMap<>();
    for (int i = OPENING_HOUR; i <= CLOSING_HOUR; i++) {
      Count dpCount = Count.builder()
          .epsilon(LN_3)
          .maxPartitionsContributed(10)
          .build();
      dpCounts.put(i, dpCount);
    }
    visits.forEach(v -> dpCounts.get(v.entryTime().getHour()).increment());
    return ImmutableSortedMap.copyOf(
        dpCounts.entrySet().stream()
        .collect(
            toMap(Map.Entry::getKey, e -> (int) e.getValue().computeResult())));
  }

工程结构

1、工程中有一个lib文件夹,里面是包含需要的相关包,比如第一张图,没有引入相关jar,代码报错
在这里插入图片描述
2、加下相关加包在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、运行项目当中的Main
在这里插入图片描述
3、结果信息,加了差分隐私加密后,如下结果
在这里插入图片描述
4、源码下载址:https://pan.baidu.com/s/1HID13ob_SHDhk8U5gwmaFg?pwd=rbyg

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值