当前位置: 首页 > news >正文

大厂高频面试题:手机号加密存储后,如何快速按尾号查询?

面试官:"在你的项目中,用户手机号是怎么存储的?我们都知道手机号属于敏感个人信息,必须加密存储。那如果现在有一个需求:运营后台需要支持按手机号尾号4位快速筛选用户,同时还要满足《个人信息保护法》和等保2.0的合规要求,你会怎么设计?"


常见错误回答(踩坑点)

  1. ❌ "把密文解密后,在内存里过滤尾号"
  2. 问题:百万级以上数据直接 OOM,性能灾难,完全不可用
  3. ❌ "用 LIKE '%xxxx' 直接查密文字段"
  4. 问题:AES/SM4 加密后是随机字符串,密文尾号和明文尾号没有任何关系,查不到任何结果
  5. ❌ "只加密中间 4 位,首尾明文存储"
  6. 问题:严重不合规,数据库拖库后直接泄露完整手机号,现在没有任何大厂会这么做
  7. ❌ "单独建一张尾号映射表,存尾号和用户 ID 的关系"
  8. 问题:冗余度高,维护一致性麻烦,不如直接冗余字段高效

标准满分回答(大厂通用方案)

"我会采用全号密文 + 脱敏展示冗余 + 尾号明文索引的三字段设计方案,这也是目前国内互联网行业最标准的落地范式。

1. 核心字段设计

字段名

类型

存储内容

作用

权限控制

mobile

VARCHAR(64)

11位手机号全号 AES-256/SM4 密文

唯一真实存储,用于发短信、登录校验等需要完整手机号的业务

仅核心服务可解密,禁止直接暴露给前端/后台

mobile_mask

VARCHAR(16)

脱敏后的展示字符串(如 138****8000)

纯展示用,所有页面、接口直接返回该字段

无特殊权限,可公开展示

mobile_last4

CHAR(4)

明文尾号4位

建立普通索引,用于按尾号快速查询、风控拉黑、运营筛选

仅授权后台接口可访问,全程记录操作日志

2. 设计优势

  • 完全合规:核心手机号全量加密存储,满足个保法和等保要求,拖库无明文泄露风险
  • 性能最优:mobile_last4 建立索引后,按尾号查询是 O(1) 的索引查询,百万级数据毫秒级返回
  • 维护简单:写入时一次性生成三个字段,无需额外维护关联表,一致性有保障
  • 风险可控:仅后 4 位明文,无法反推完整手机号,配合操作审计和权限管控,隐私风险极低"

面试官必追问环节(层层深入)

追问1:为什么只存尾号4位明文,不存前3位或者更多?

"前 3 位是号段,包含运营商和归属地信息,如果和尾号 4 位同时泄露,会大幅缩小手机号的枚举范围(比如 138 开头 + 尾号 8000,全国只有约 10000 个可能)。而单独的尾号 4 位,全国有 10^4 = 10000 个相同尾号的手机号,无法定位到具体个人,隐私风险可以忽略不计。"

追问2:如果需要按完整手机号精确查询用户怎么办?

"我们会对完整手机号做一次AES-256 可搜索加密(Searchable Encryption),先生成 mobile_token 字段并建立唯一索引。查询时,先用同一个加密密钥对输入的手机号计算 token,然后用 token 值去数据库精确匹配,匹配成功后再解密 mobile 字段使用。如果对安全性要求更高,也可以采用慢哈希(bcrypt/argon2)+ 密文索引的方案,权衡查询性能和安全强度。这样既保证了查询性能,又不会在数据库中存储明文手机号。"

追问3:尾号明文会不会有隐私泄露风险?怎么规避?

"风险极低,但我们会做三层防护:

  1. 权限隔离:只有运营和风控岗位的特定人员才能访问 mobile_last4 字段,普通员工看不到
  2. 操作审计:所有对 mobile_last4 的查询操作都会记录日志,包括查询人、查询时间、查询条件
  3. 频率限制:对按尾号查询的接口做严格的频率限制,防止批量枚举攻击"

追问4:如果未来需要支持按手机号前几位模糊查询,怎么扩展?

"这种需求非常少见,而且风险很高。如果确实有必要,我们会引入可搜索加密技术(Searchable Encryption)或者隐私计算方案,绝对不会存储任何额外的明文片段。对于普通业务,我们会建议产品调整需求,改用其他非敏感字段查询。"


面试加分金句

"技术设计永远是安全和业务的平衡。全加密虽然最安全,但会让业务完全无法使用;全明文虽然方便,但严重违规。而全号密文+尾号索引的方案,用最小的隐私代价,解决了最大的业务痛点,这也是它能成为行业标准的原因。"

http://www.jsqmd.com/news/1105953/

相关文章:

  • AI一周事件 · 2026-W27(6月24日–6月30日)
  • 终极Windows驱动管理指南:DriverStoreExplorer免费释放C盘空间
  • BetterNCM Installer:3步解锁网易云音乐隐藏功能
  • 为了防止题目链接失效,将题目原文复制如下:
  • 基于 epoll 的协程调度器——零基础深入浅出 C++20 协程
  • 7_CSS预处理器Sass
  • Sonnet 5 发布:Prompt 已死,Loop 当
  • Java实现Navicat密码加密解密:AES-256-CBC本地安全存储实战
  • 短效代理适合哪些业务场景?资深玩家实测科普适配场景指南
  • 使用74HC165与ARM Cortex-M4实现高效并行转串行输入设计
  • QuickVina 2深度解析:20倍加速的分子对接性能揭秘
  • IS31FL3731 LED驱动芯片与PIC18F24K50微控制器的嵌入式开发实践
  • 【精通】SmartWriter v2.5:写作平台 CI/CD — 提示词版本管理、A/B 评测与回归验证深度实战
  • Go 进阶必修:90% 的人都没用对的“表驱动法”
  • 关于动态规划【力扣300.最长递增子序列的思考】
  • 给制造以光,让智造有根:中策橡胶卓越智能工厂背后的F5G-A全光力量
  • 华为MetaERP Oracle EBS R12 AP 供应商主数据完整配置指南(架构师实施版)一、前置基础配置(必须先完成,否则供应商无法正常使用)(一)财务选项 Financials Opti
  • 基于树莓派的边缘计算安全网关设计与实现
  • 2026燃油车底盘整备调校,选对修理厂事半功倍
  • 【云原生与DevOps】07-Istio服务网格落地:从试点到全量的踩坑记录
  • AI时代大学生找实习,企业真正筛选的不是技术栈而是思维方式
  • Claude Fable 5 system prompt 解读与效果评估
  • 平基土石方三维计算软件V0.4.1版更新
  • 保姆级教程:OpenCode 14 个社区插件 + 6 个实战案例,建议收藏,手把手带你打造最强 AI 编码环境
  • 告别排版焦虑:Markdown一键转公众号格式,这几款工具让创作回归纯粹
  • 【第 9 篇:本地化部署——从 0 到 1 的企业级系统部署全记录】
  • Walmart SDE Interview Experience 三轮 VO 高频面经 | System Design + BQ + 算法 稳稳拿 Offer(2026)
  • 标题:Linux企业实战:打造高性能网关并实现基于IP的精准流量整形
  • 5分钟学会免费音乐解锁:打破平台限制的完整指南
  • 导师严选!盘点2026年备受推崇的的AI智能降重工具