识别并脱敏上传到deepseek/chatgpt的文本文件中的护照信息

本文将介绍一种简单高效的方法解决用户在上传文件到DeepSeek、ChatGPT,文心一言,AI等大语言模型平台过程中的护照号识别和脱敏问题。

DeepSeek、ChatGPT,Qwen,Claude等AI平台工具快速的被接受和使用,用户每天上传的文本数据中潜藏着大量敏感信息,大量的AI服务数据泄漏事件源于未正确处理输入数据。

  • 你是否在上传数据到deepseek,chatgpt,通义千问,豆包,腾讯元宝,纳米搜索等平台之前犹豫过?
  • 是否纠结如何快速的检查数据中是否存在敏感信息?
  • 是否受制于如何快速轻量的对这些数据进行脱敏?
  • 你是否担心数据上传到大语言模型等AI平台之后,敏感信息等会被用于特殊的用途?
  • 你是否担心数据不仅会被大模型平台获取,还会被诸多的插件应用获取?

那么本文将帮你找到答案。前面的文章介绍了手机号,身份证号的脱敏,详见这里

如果不想了解原理部分的内容,可以直接跳转到护照号脱敏章节获取使用的方法和技巧,本文的目录结构如下:

如果不想了解原理部分的内容,可以直接跳转到单一敏感信息脱敏章节获取使用的方法和技巧。

护照号脱敏

下面将使用cyberchef对于护照号进行识别和脱敏。相信大家现在万事都会首先问下deepseek,先看询问deepseek结果如何:

对于cyberchef的使用,目前deepseek给出的结果大方向正确的,但是不能够直接拿来使用,例如其中的正则只是覆盖了部分的护照格式,同时出现了AI幻觉的问题,生成的内容填入cyberchef是无法被识别的,有比较多的操作性的错误。这也是本文有别于AI的价值,能够帮助你高效的完成这一项工作。

上述的答案虽然结果虽然不全对,但是仍有一些地方倒是存在一些价值,例如可以基于其中的正则进行修改。对于文本文件来说,识别这些信息主要靠的是正则表达式。有了正则表达式之后,就可以使用cyberchef的正则模块,进行识别,测试正则是否正确。

护照号测试用例

由于护照号的的类型是非常的多,上述的提问只是给出的正则只是覆盖了护照的几种形式,因此需要针对护照的种类,继续提问deepseek,如下:

基于deepseek的回答,构造一组包含护照信息的测试数据如下:

xml 复制代码
手机号:18811112222 姓名:张三 护照:G12345678 URL:https://xiaofan.blog.csdn.net
手机号:17711112222 姓名:李小四 护照:DE1234567  URL:https://xiaofan.blog.csdn.net
手机号:19911112222 姓名:村中少年 护照:SE 12 3456  URL:https://xiaofan.blog.csdn.net
手机号:16611112222 姓名:王五 护照:H12-345-678  URL:https://xiaofan.blog.csdn.net

find操作正则

虽然deepseek给出的所有护照种类仍然的不完整,但是其中给出的正则已经能够满足一些场景的需求。有了上述cyberchef的提示,并基于测试用例优化正则直至匹配上所有的测试用例为止,效果如下:

对应的cyberchef脚本如下:

xml 复制代码
[
  { "op": "Regular expression",
    "args": ["User defined", "([EG]|DE|SE|H|M)[-\\s]*(\\d{2,})[-\\s]*(\\d{2,3})[-\\s]*(\\d{1,})", true, true, false, false, false, false, "Highlight matches"] }
]

确认上述的正则能够匹配所有的测试用例之后,只保留前一到两位的字母,使用replace操作替换如下:

对应的cyberchef脚本如下:

xml 复制代码
[
  { "op": "Find / Replace",
    "args": [{ "option": "Regex", "string": "([EG]|DE|SE|H|M)[-\\s]*(\\d{2,})[-\\s]*(\\d{2,3})[-\\s]*(\\d{1,})" }, "$1*******", true, false, true, false] }
]

这里需要知道$1的用法,表示的是第一个被识别和提取的部分。

register操作正则

如果直接让deepseek给出正则的识别护照,给出的正则表达式可能和上述的正则不同,如下:

使用上述正同样能够匹配上述的测试用例,如下:

cyberchef对应的脚本为:

xml 复制代码
[
  { "op": "Regular expression",
    "args": ["User defined", "(?P<ordinary>[EG](?:[\\s-]*\\d){8})|(?P<diplomatic>DE(?:[\\s-]*\\d){7})|(?P<official>SE(?:[\\s-]*\\d){6})|(?P<hk>H(?:[\\s-]*\\d){8})|(?P<macau>M(?:[\\s-]*\\d){8}) ", true, true, false, false, false, false, "Highlight matches"] }
]

如果使用上述的正则,则需要使用register操作进行替换(find操作使用该正则不生效),对于护照号保留前2位即可,其他部分使用星号进行替换,如下:

对应的cyberchef脚本如下:

xml 复制代码
[
  { "op": "Fork",
    "args": ["\\n", "\\n", false] },
  { "op": "Register",
    "args": ["(?P<ordinarynew>G(?:[\\s-]*\\d){8})|(?P<ordinaryold>E(?:[\\s-]*\\d){8})|(?P<diplomatic>DE(?:[\\s-]*\\d){7})|(?P<official>SE(?:[\\s-]*\\d){6})|(?P<hk>H(?:[\\s-]*\\d){8})|(?P<macau>M(?:[\\s-]*\\d){8})", true, false, false] },
  { "op": "Find / Replace",
    "args": [{ "option": "Regex", "string": "$R0" }, "G*****", true, false, true, false] },
  { "op": "Find / Replace",
    "args": [{ "option": "Regex", "string": "$R2" }, "DE******", true, false, true, false] },
  { "op": "Find / Replace",
    "args": [{ "option": "Regex", "string": "$R3" }, "SE******", true, false, true, false] },
  { "op": "Find / Replace",
    "args": [{ "option": "Regex", "string": "$R4" }, "H*******", true, false, true, false] }
]

这里面涉及到几个关键点:

  • 正则的编写直接询问deepseek即可。
  • 关于fork的用法详见 详见我之前的文章《Cyberchef基础概念之-分叉合并-fork/merge》,详见这里
  • 关于register的用法详见我之前的文章《cyberchef基础概念之-寄存器-Register》,详见这里
  • 对于register中R0,R1,R2,R3的理解和使用

增加护照名识别

如果想要更加精准的识别,在上述的基础上加上护照的限定会更加的准确,如下:

xml 复制代码
[
  { "op": "Regular expression",
    "args": ["User defined", "护照[::\\s]*([EG]|DE|SE|H|M)[-\\s]*(\\d{2,})[-\\s]*(\\d{2,3})[-\\s]*(\\d{1,})", true, true, false, false, false, false, "Highlight matches"] }
]
xml 复制代码
[
  { "op": "Regular expression",
    "args": ["User defined", "护照[::\\s]*((?P<ordinarynew>G(?:[\\s-]*\\d){8})|(?P<ordinaryold>E(?:[\\s-]*\\d){8})|(?P<diplomatic>DE(?:[\\s-]*\\d){7})|(?P<official>SE(?:[\\s-]*\\d){6})|(?P<hk>H(?:[\\s-]*\\d){8})|(?P<macau>M(?:[\\s-]*\\d){8}))", true, true, false, false, false, false, "Highlight matches"] }
]

其他内容的脱敏

上述的敏感信息种类中可知,还存在着证件信息,金融账户信息,财产信息,网络行为信息等,例如姓名,银行卡号,车牌号,护照,邮箱,密码,IP地址等其他的敏感信息,这些信息如何脱敏处理,详见我的专栏《脱敏Deepseek/Chatgpt等AI大模型中的敏感数据》,这里

JSON/XML脱敏

上述只是介绍了无结构的TEXT的文本的处理方法,当然有的文本文件是有格式的,那么针对JSON和XMl这两种最为常见的格式,如下处理呢,请移步至《识别并脱敏上传到deepseek/chatgpt JSON数据中的敏感信息》和《识别并脱敏上传到deepseek/chatgpt XML数据中的敏感信息》,详见这里这里

其他格式文件脱敏

那么针对word,excel,ppt,pdf,各种图片文件这写常见的格式,如何处理呢,请移步我的专栏《脱敏Deepseek/Chatgpt等AI大模型中的敏感数据》,这里

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里

相关推荐
canonical_entropy3 小时前
一份关于“可逆计算”的认知解码:从技术细节到哲学思辨的完整指南
后端·低代码·deepseek
云宏信息6 小时前
赛迪顾问《2025中国虚拟化市场研究报告》解读丨虚拟化市场迈向“多元算力架构”,国产化与AI驱动成关键变量
网络·人工智能·ai·容器·性能优化·架构·云计算
用户51681661458417 小时前
使用[DeepSeek]快速定位nginx前端部署后报错:500 Internal Server Error nginx/1.29.1
nginx·deepseek
Insight-n8 小时前
低代码数字化时代的开发新范式
低代码·ai
桂花饼10 小时前
性能怪兽:GPT-5-Codex三大核心进化,重新定义AI编程
人工智能·chatgpt·aigc·gpt-5·gemini-2.5·grok4·it/互联网
带刺的坐椅12 小时前
Solon v3.4.6, v3.5.4, v3.6.0-M1 发布。正式开始 LTS 计划
java·spring·ai·web·solon·mcp
守城小轩12 小时前
从零开始学习n8n-一文读懂n8n
ai·n8n
Learn Beyond Limits12 小时前
Choosing the Number of Clusters|选择聚类的个数
人工智能·深度学习·神经网络·机器学习·ai·聚类·吴恩达
HenrySmale13 小时前
论文笔记:How Can Recommender Systems Benefit from Large Language Models: A Survey
人工智能·语言模型·chatgpt
科技峰行者15 小时前
阿里云无影发布首个Agentic Computer形态的个人计算产品
人工智能·阿里云·ai·agent