比如现在有A、B、C、D、E、F等六个的身份证号码需要脱敏。由于前端系统需要对身份证号码的有效性做出检查,所以必须脱敏成功的身份证号码是一个合法的号码,并且在脱敏后六个系统中对于同一个居民的身份证必须为同一个号码。
需要准备的工具和简单的需求以及大致的实现逻辑:
1. 身份证号码生成器。如果没有就是用身份证的规则【6位行政区划编码+8位出生日期编码+3位顺序号顺带性别校验+1位校验码】,自己来生成。可以一次性生成几百几千万个号码共一年中多次混淆使用。注意有些业务系统会对年龄有额外的判断,需要有一个配置项来决定是否随机生成年或者地区等具体业务需求。
2. 一个封装了数据库操作的类库:
1)从主系统取得所有的身份证号码和ROWID(以oracle为例)。将这些身份证号码以及新脱敏的身份证号码放在一个字典中。(记得此字典的构造函数需要一个合适的值不然字典的扩充会额外占用时间。)
2)从其他系统取得身份证号码和ROWID。分别使用字典中相对应的身份证键去更新数据库。(使用ROWID可以将时间缩短。)为了让操作最迅速可以使用多线程或者多进程。
3)如果有系统的表字段还需要更新其他字段可一并写入SQL脚本。
3. 具体程序太简单了都不想写。