# DataMaskingSystem **Repository Path**: liktt/data-masking-system ## Basic Information - **Project Name**: DataMaskingSystem - **Description**: 敏感数据自动化脱敏系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-03-14 - **Last Updated**: 2025-08-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DataMaskingSystem ### 一、介绍 敏感数据自动化脱敏系统 实现对敏感数据的自动化脱敏,并支持对脱敏数据的自动恢复。该系统具备多种脱敏方式,如遮盖脱敏、哈希脱敏、替换脱敏、加密脱敏和图像遮盖脱敏等,同时提供用户登录、注册、处理记录查看等功能。 测试数据:三种文件格式:uploads/alltest.xlsx、alltest.txt、alltest.csv + 人脸图像 ### 二、系统架构 git clone https://gitee.com/liktt/data-masking-system.git 本系统采用 Flask 作为后端框架,使用 SQLAlchemy 进行数据库操作,前端使用 HTML、CSS 和 JavaScript 进行页面构建和交互。支持对多种文件格式(如 .csv, .xlsx, .txt, .jpg, .png, .jpeg)的处理。 - **前端**:Bootstrap 5 + jQuery - **后端**:Flask + SQLAlchemy - **数据库**:MySQL 5.7+ - **加密算法**:AES-256 - **图像处理**:OpenCV 4.5 ```bash DataMaskingSystem/ ├── __pycache__/ ├── .idea/ ├── .venv/ ├── .vscode/ ├── sql/ │ └── datamasking.sql # 数据库建表及初始化脚本 ├── templates/ │ ├── static/ │ │ └── css/ │ │ └── components/ │ │ ├── auth.css # 登录注册样式 │ │ └── style.css # 通用样式 │ ├── favicon.ico # 页面图标 │ ├── auth.html # 登录注册页面 │ ├── base.html # 页面基础模板 │ ├── decrypt.html # 解密页面 │ ├── desensitize.html # 脱敏设置页面 │ ├── index.html # 首页 │ ├── record.html # 历史记录页面 │ └── result.html # 脱敏结果展示页面 ├── uploads/ # 上传文件存放目录 ├── utils/ │ └── data_decryptor.py # 数据解密工具模块 ├── app.log # 系统运行日志 ├── app.py # Flask 主程序入口 └── README.md # 项目说明文档 ``` ##### 处理流程 1. 用户上传文件 → 2. 自动敏感字段检测 → 3. 选择脱敏策略 → 4. 生成处理文件 → 5. 记录操作日志 ### 三、 功能特色 - ✅ 多类型敏感字段识别(身份证、手机号、邮箱、地址、社保号等) - 🔐 多种脱敏策略: - 遮盖(mask) - 替换(replace) - 哈希(hash) - 加密(encrypt) - 人脸图像(image) - 📤 支持 CSV、TXT、XLSX、图像文件上传处理 - 👤 支持用户注册、登录、登出(Flask-Login) - 📊 数据库支持(MySQL) - 💡 详细日志记录(Logging) - 🧪 自动检测数据编码类型(chardet) | 功能模块 | 支持类型 | 技术实现 | | :------: | :----------: | :-----------------------: | | 文本脱敏 | CSV/XLSX/TXT | 正则检测 + 动态替换 | | 图像脱敏 | JPG/PNG/JPEG | OpenCV人脸检测 + 高斯模糊 | | 用户认证 | 登录/注册 | Flask-Login + 密码哈希 | | 数据加密 | AES-256 | pycryptodome实现 | | 操作审计 | 处理记录查询 | SQLAlchemy日志存储 | ### 四、安装教程 1. git clone https://gitee.com/liktt/data-masking-system.git //克隆仓库 2. conda create -n "dataMasking" python=3.9 //创建虚拟环境 3. conda activate dataMasking //激活虚拟环境 4. pip install flask pymysql cryptography等(详见import内容) //安装依赖 ```bash pip install flask flask-login flask-sqlalchemy pymysql pandas chardet pycryptodome opencv-python ``` ### 四、使用说明 #### 开发环境 1. 编辑器:VSCode 2. 编程语言:Python 3. 环境管理:Anaconda #### 依赖安装 ###### 环境要求 • Python 3.7+ (推荐 3.9+) • MySQL 5.7+ (需提前创建 `datamasking` 数据库) ###### 核心依赖库 Web 框架 ```text Flask==2.0.3 # Web 服务核心 Flask-Login==0.5.0 # 用户认证模块 Flask-SQLAlchemy==3.0.3 # 数据库ORM扩展 ``` 数据库驱动 ```text PyMySQL==1.0.2 # MySQL 连接驱动 SQLAlchemy==1.4.32 # 数据库工具包 ``` 数据处理 ```text pandas==1.3.5 # 结构化数据处理 openpyxl==3.0.10 # Excel 文件支持 chardet==4.0.0 # 文件编码检测 ``` 加密与脱敏 ```text pycryptodome==3.12.0 # AES 加密算法 opencv-python-headless==4.5.5.64 # 图像脱敏处理 numpy==1.21.6 # 图像处理依赖 ``` 一键安装 ```bash # 使用国内镜像加速安装 pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ ``` 重要提示 1. 加密库冲突解决:如果遇到加密相关报错,请执行: ```bash pip uninstall crypto pycryptodome pip install pycryptodome ``` 2. 图像处理依赖:OpenCV 需要系统级依赖,Ubuntu/Debian 用户建议先运行: ```bash sudo apt-get install -y libgl1 libglib2.0-0 ``` 3. 数据库配置:修改 `app.py` 中的数据库连接信息: ```python app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://<用户名>:<密码>@<主机>/datamasking' ``` ### 五、运行步骤 1. 确保已经按照上述安装教程完成环境搭建和依赖安装 2. 启动 Flask 应用:python app.py 3. 打开浏览器,访问 http://127.0.0.1:5000/auth 进行登录或注册 4. 登录成功后,可在首页上传文件并选择脱敏方式进行处理 5. 处理完成后,可在处理记录页面查看处理历史和下载密钥(如果是加密脱敏) ### 六、 脱敏字段支持(正则规则) | 字段类型 | 示例说明 | | --------------- | ------------------------------- | | 身份证号 | 18位或15位身份证 | | 手机号 | 大陆手机号(1[3-9]开头) | | 邮箱 | 标准邮箱地址格式 | | 银行卡/信用卡号 | 13~19位数字组成 | | 地址 | 中国省市区结构地址 | | 薪资 | 如5000¥ | | 社保号(SSN) | 中国18位或美国 xxx-xx-xxxx 格式 | | 护照号 | 中文或英文护照编码 | | 驾驶证号 | 汉字开头 + 编码结构 | | 员工编号 | EMP+数字,如EMP12345678 | | 学生编号 | STU+数字,如STU20240001 | 以上仅为部分举例说明,更多详见代码具体实现,同时支持动态添加拓展。 ### 七、脱敏策略说明 | 策略 | 描述 | | ------- | ------------------------------------------ | | mask | 使用 `*` 遮盖敏感字段中部分信息 | | replace | 用合法随机值替换原字段内容(如随机手机号) | | hash | 使用带盐哈希方式处理敏感字段 | | encrypt | 使用 AES 加密方式进行不可逆加密处理 | | image | opencv人脸脱敏 | ### 八、日志说明 系统运行日志保存在 `app.log` 文件中,包括上传记录、错误信息、用户操作等,便于安全审计与问题追踪。 ### 九、开发贡献 ```bash git clone https://gitee.com/liktt/data-masking-system.git # 同步最新代码 git pull origin master # 提交修改 git add . git commit -m "comment" # 推送代码 git push origin master # 强制推送(谨慎使用) git push -f origin master ```