`
zhoumeng87
  • 浏览: 69900 次
文章分类
社区版块
存档分类
最新评论

如何用java实现数据脱敏

阅读更多

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏,数据库安全技术之一。

比如我们现在有个user表,含有名字,性别,邮箱,电话号码等字段,但是当查看这些数据时,我们又不希望这些数据被暴露,这时可以对这些数据进行脱敏处理,当然可以根据需要选择哪些字段需要脱敏,然后再输出,至于怎么选择的,是另外一回事了。

如下面这个表格中的数据,是经过脱敏加密后的:(所有字段都进行脱敏)

 

以下是代码实现:

官网:www.fhadmin.org
    private static final int SIZE = 6;
    private static final String SYMBOL = "*";

    public static String toConceal(String value) {
        if (null == value || "".equals(value)) {
            return value;
        }
        int len = value.length();
        int pamaone = len / 2;
        int pamatwo = pamaone - 1;
        int pamathree = len % 2;
        StringBuilder stringBuilder = new StringBuilder();
        if (len <= 2) {
            if (pamathree == 1) {
                return SYMBOL;
            }
            stringBuilder.append(SYMBOL);
            stringBuilder.append(value.charAt(len - 1));
        } else {
            if (pamatwo <= 0) {
                stringBuilder.append(value.substring(0, 1));
                stringBuilder.append(SYMBOL);
                stringBuilder.append(value.substring(len - 1, len));

            } else if (pamatwo >= SIZE / 2 && SIZE + 1 != len) {
                int pamafive = (len - SIZE) / 2;
                stringBuilder.append(value.substring(0, pamafive));
                for (int i = 0; i < SIZE; i++) {
                    stringBuilder.append(SYMBOL);
                }
                if ((pamathree == 0 && SIZE / 2 == 0) || (pamathree != 0 && SIZE % 2 != 0)) {
                    stringBuilder.append(value.substring(len - pamafive, len));
                } else {
                    stringBuilder.append(value.substring(len - (pamafive + 1), len));
                }
            } else {
                int pamafour = len - 2;
                stringBuilder.append(value.substring(0, 1));
                for (int i = 0; i < pamafour; i++) {
                    stringBuilder.append(SYMBOL);
                }
                stringBuilder.append(value.substring(len - 1, len));
            }
        }
        return stringBuilder.toString();

    }

这种是通用的脱敏方法,可能不符合你的特定要求。当然你可以对每种类型的数据(如邮箱,电话号码,身份证号)进行特定方式的脱敏,比如电话号隐藏后四位,身份证号隐藏年月日等等,只需要增加一些逻辑就可以。

0
0
分享到:
评论

相关推荐

    java 日志的数据脱敏的实现方法

    Java日志数据脱敏是为了确保在记录日志时,敏感信息不会被泄露,从而保护用户隐私和企业数据安全。在本文中,我们将探讨如何在Java应用程序中实现这一目标。 首先,理解数据脱敏的重要性至关重要。在处理包含敏感...

    Mybatis+注解轻松实现脱敏

    总结来说,通过MyBatis+注解的方式实现数据脱敏,使得Java开发人员能够在保护用户隐私的同时,简化开发流程,提高开发效率。这种方式适用于处理涉及敏感信息的各种场景,如身份认证、在线支付等,确保数据安全。

    springboot spring aop 拦截器注解方式实现脱敏

    在本案例中,我们将探讨如何使用注解来实现拦截器,用于数据脱敏,这是保护敏感信息的一种常见方法。数据脱敏是指在展示或传输数据时,将敏感信息替换或隐藏,以确保隐私。 首先,让我们从`pom.xml`文件开始。在...

    使用log4j2实现日志数据脱敏

    本文将详细介绍如何使用Log4j2实现日志数据脱敏。 一、Log4j2简介 Log4j2是Apache软件基金会开发的日志框架Log4j的升级版,它具有更高的性能、灵活性和可配置性。Log4j2支持多种日志记录级别(如DEBUG、INFO、WARN...

    pdf实现关键字脱敏.zip

    关键字脱敏,也称为数据脱敏,是指在不改变文档结构和布局的前提下,替换或删除文档中的敏感信息,以保护隐私和商业秘密。 在Java环境下,`iTextPDF`库是一个强大的PDF处理工具,可以帮助开发者实现PDF的关键字脱敏...

    基于mybatis 来实现对敏感数据在进出DB时候进行脱敏处理, 让各位码友们无需自己各种手动实现

    一、MyBatis 敏感数据脱敏原理 1. **拦截器机制**:MyBatis 提供了一种拦截器(Interceptor)机制,允许我们在 SQL 执行前或执行后插入自定义逻辑。我们可以利用这个特性,在数据读取或写入数据库时添加脱敏处理。 ...

    java数据脱敏平台后端项目.zip

    2. 脱敏算法实现:这部分代码实现了不同的数据脱敏策略,例如替换敏感字段为随机值、掩码特定字符、使用固定模式替换等。对于日期、电话号码、身份证号等特殊类型的数据,可能需要定制化的脱敏规则。 3. 数据处理与...

    【数据脱敏方案】不使用 AOP + 注解,使用 SpringBoot+YAML 实现

    为了解决这些问题,我们选择了一种更为直接的方式来实现数据脱敏——使用Spring Boot和YAML文件。 #### 三、技术选型 ##### 1. Spring Boot Spring Boot是Spring框架的一个扩展,它简化了基于Spring的应用程序的...

    Hive的Udf函数进行数据脱敏

    总结来说,通过自定义UDF,我们可以方便地在Hive中实现数据脱敏功能,以保护敏感信息。这个过程涉及到Java编程、Hive API的使用以及SQL查询的编写。在实际应用中,可能需要根据业务需求调整UDF的行为,例如改变保留...

    Java脱敏工具类,基于注解,也支持非注解脱敏。根据业务需要动态开启和关闭字段的脱敏。.zip

    总结起来,这个Java脱敏工具类提供了一种高效且灵活的方式来处理数据脱敏问题,它结合了注解的便利性和动态控制的灵活性,使得在各种业务场景下都能轻松应对数据隐私保护的挑战。对于任何涉及敏感数据处理的Java项目...

    手机号码、邮箱等敏感数据前端显示脱敏处理的解决方案

    在我们数据库中有些时候会保存一些用户的敏感信息,比如:手机号、银行卡等信息,如果这些信息以明文的方式保存,那么是不安全的。 假如:黑客黑进了数据库,或者离职人员导出了数据,...也可以自定义注解实现数据脱敏

    高效数据脱敏工具 - MyBatis-Cipher,基于MyBatis的数据库敏感信息加密解密方案

    项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    总之,通过利用Jackson的序列化功能,我们可以轻松地在Spring MVC中实现JSON数据的脱敏,确保敏感信息不被泄露,同时保持了良好的代码可读性和维护性。在实际项目中,还应注意根据业务需求灵活调整脱敏策略,以达到...

    springboot 脱敏自定义注解

    总的来说,通过自定义注解和Spring AOP,我们可以灵活地在Spring Boot应用中实现数据脱敏,提高应用的安全性。这不仅使代码保持整洁,也使得脱敏规则易于管理和维护。在实际开发中,还需要注意处理各种异常情况,...

    shardingsphere4.1.1版本主从读写分离组合数据脱敏功能demo

    通过这个demo,开发者可以直观地了解ShardingSphere在实际场景中的应用,理解其读写分离和数据脱敏的实现机制,有助于在自己的项目中高效地集成和使用ShardingSphere。同时,这个demo也展示了ShardingSphere4.1.1...

    基于Springboot和自定义注解的Java数据脱敏与加密设计源码

    该项目为基于Springboot框架构建的Java数据脱敏与加密解决方案源码,包含52个文件,涵盖47个Java源文件、1个Git忽略文件、1个Markdown文档、1个XML配置文件、1个YAML配置文件、1个属性文件。通过自定义注解技术实现...

    springmvc log4j2 logback 注解 jackson 日志脱敏实现源码

    3. **基于注解的脱敏方式**:注解是Java中的元数据,可以用来标记代码以执行特定的操作。在日志脱敏场景下,开发者可以在敏感字段上添加注解,然后在运行时通过AOP(面向切面编程)或者其他处理机制自动执行脱敏逻辑...

    Java开发工具包(数据校验,数据脱敏,类处理,Http等.....)

    例如,一个用户注册系统可能需要利用数据校验库验证用户输入,使用数据脱敏技术保护用户隐私,通过类处理来动态生成验证逻辑,最后通过HTTP库与服务器进行交互。这个Java开发工具包就是为了让开发者能高效地完成这些...

    脱敏组件start源码

    【标题】"脱敏组件start源码" 描述了这是一个用于...这个组件的源码对于理解如何在实际项目中实现数据安全和保护隐私具有很高的学习价值,特别适合对Java、MyBatis、Spring Boot和微服务感兴趣的开发者进行研究和参考。

    一个脱敏插件,适用于Kettle9.0.的电子邮件、地址、ID号、电话号码等.zip

    总结来说,这个插件是一个用Java编写的,专为Pentaho Data Integration(Kettle)9.0版本设计的数据脱敏解决方案。它旨在帮助用户在处理包含敏感信息的数据集时,通过脱敏技术来保护隐私,确保合规性。插件的核心...

Global site tag (gtag.js) - Google Analytics