银行帮学校学生开账户,因无法提前取得全部学生的身份证号,所以不得不伪造假身份证号,数量约为700个
1.系统会自动识别假冒伪劣身份证号,如果不能通过,则不能输入
2.系统会自动识别重复身份证号,如果重复则不能输入
3.数量巨大
妮可烦啊烦..所以简单的想做出来,还比较困难,于是研究现有18位身份证编码规则,得出下面的EXCEL表格
*^&^*
1.六位数字地址码通过查询『全国县及县以上行政区划代码表(GBT2260-1999)』得到一个取值范围,本例取了3个编码,随机生成
2.八位数字出生日期码,因为是在校学生,本例取值为1989-01-01至1991-12-31中随机的任意一天
3.三位数字顺序码取值为"00"加上随机得到的性别识别码"1"和"2"
4.一位数字校验码取值按照现有18位身份证编码验证规则计算得出
校验的计算方式:
1. 对前17位数字本体码加权求和
公式为:S = Sum(Ai * Wi), i = 0, ... , 16
其中Ai表示第i位置上的身份证号码数值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2. 以11对计算结果取模
Y = mod(S, 11)
3. 根据模的值得到对应的校验码
对应关系为:
Y值: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
EXCEL表格中:
前17位号码生成公式=(CHOOSE(INT(RAND()*3+1),"420601","420602","420606")) & (TEXT((INT(RAND()*((TEXT($C$3&"-12-31",0))-(TEXT($B$3&"-1-1",0)))+(TEXT($B$3&"-1-1",0)))),"yyyymmdd")) & "00" & (INT(RAND()*2+1))
第18位校验码生成公式=CHOOSE((MOD(MID(E3,1,1)*7+MID(E3,2,1)*9+MID(E3,3,1)*10+MID(E3,4,1)*5+MID(E3,5,1)*8+MID(E3,6,1)*4+MID(E3,7,1)*2+MID(E3,8,1)*1+MID(E3,9,1)*6+MID(E3,10,1)*3+MID(E3,17,1)*7+MID(E3,11,1)*9+MID(E3,12,1)*10+MID(E3,13,1)*5+MID(E3,14,1)*8+MID(E3,15,1)*4+MID(E3,16,1)*2,11)+1),"1","0","X","9","8","7","6","5","4","3","2")
[ 本帖最后由 妮可宝贝 于 2006-10-19 18:06 编辑 ] |