银行卡号脱敏
识别并打码银行卡号,配合 Luhn 校验区分真实卡号与普通数字,本地处理不上传。
银行卡号脱敏
全部在浏览器本地处理,原始数据不会离开您的电脑,也不写入任何存储。
支付卡数据的特殊要求
银行卡号属于支付敏感信息。PCI DSS 对存储和展示有明确规定:卡号必须加密存储,展示时必须掩码,除末四位和首位六位外不得显示其他数字,安全码和完整磁道数据在授权后不得存储。国内监管对支付信息的要求同样严格,涉及银行卡信息的系统在等保测评中通常会被提高定级,并要求部署专门的加密和审计措施。这不是能靠开发规范自觉遵守的事,需要技术手段强制。
业务上必须区分开的四类数据
- 卡号:需要掩码展示,存储加密,可用于绑定和查询
- 有效期:属于敏感认证数据,一般不单独存储
- 安全码:授权后不得以任何形式留存,包括日志和缓存
- 磁道数据:同样不得留存,只在授权链路中透传
很多系统为了「方便用户下次支付」而保存安全码,这既违反规范也放大了泄露后果。正确做法是用支付机构返回的令牌代替卡号,后续扣款走令牌,本地不碰真实卡号。
关于 Luhn 校验
Luhn 算法是卡号的模十校验,能发现单数字错误和相邻数字调换,用于区分录入错误。但它只能说明格式合规,不能证明卡号真实存在。本工具用它帮助判断哪些数字串更像卡号,不作为任何形式的验证依据。
脱敏方式对照
| 方式 | 保留信息 | 适用场景 | 可逆性 |
|---|---|---|---|
| 掩码替换 | 长度、首尾字符 | 测试数据、展示页面 | 不可逆 |
| 中间省略 | 前缀与后缀 | 核对身份、客服查询 | 不可逆 |
| 哈希替换 | 无,但同值同哈希 | 需要关联分析的场景 | 不可逆 |
| 加密存储 | 完整原文 | 需要还原的业务流程 | 可逆,需密钥 |
| 随机替换 | 格式、长度 | 开发测试环境 | 不可逆 |
选择哪种方式取决于后续是否要还原。客服核对身份用中间省略,开发测试用随机替换,需要保留统计规律又要防泄露用哈希替换。加密虽然可逆,但密钥管理成本高,不是所有场景都值得。
相关产品与指南
常见问题
Luhn 校验通过就代表卡号有效吗?▼
不代表。Luhn 只校验格式,任何人按规则都能构造出通过校验的数字串。卡号是否有效只能在支付授权环节由发卡行确认。
为什么银行卡号一般是 16 到 19 位?▼
不同卡组织的规则不同。常见借记卡 19 位,信用卡 16 位,部分卡种 13 到 15 位。本工具按 12 到 19 位范围识别,覆盖主流卡种。
卡号能存在数据库里吗?▼
可以存,但必须加密,并且展示时掩码。安全码和磁道数据不得存储。更推荐的做法是用支付机构返回的令牌代替卡号,本地系统不接触真实卡号,合规压力小很多。
日志里出现了完整卡号怎么办?▼
立即清理历史日志,并在日志框架层加上卡号过滤规则。同时评估是否需要按数据泄露流程上报,取决于日志的访问范围和留存时间。
脱敏后的卡号还能用于对账吗?▼
保留前六位和后四位的掩码方式可以支撑大部分对账场景,因为前六位是发卡行标识,后四位能区分同一用户的多张卡。精确匹配需要用令牌或哈希列。