用AS3.0生成身份证号码随机
由于我要用身份证重新注册游戏账号,但是又不能用自己本人的。 于是突发奇想自己做一个身份证生成器。 首先是出身地址:成都市锦江区 出身年月日:1989年9月1日 那么当前的前14位已经出来了:510104 19890901 前6位是地址码,后8位是出身年月日 第15,16位是所在地区派出所代码,第17位,是同年月日出身人的编号----男奇女偶 第18位是根据前17位数字码,按照ISO 7064:1983.MOD 11-2标准计算得来,也就是所谓的校验码。 这里要用到几个简单的算法: 1,随机整数:Math.floor(Math.random()*(99-11+1))+11 ? ? ? ? (11-99随机整数) 2,十位数取十位:Math.floor( Number/10%10 ) ? ? ? ? ? ? ? ? ? ? ? ? ?(百位就是Math.floor( Number/100%10 )?) 3,前17位需乘以的系数顺序:7 9 10 ? 5 8 4 ? ?2 1 6 3 ? 7 9 ? 10 5 ? 8 4 ?2 然后得到的乘积和对11取模 即 %11 得到 结果:B 之后按照一一对应原则: 0 1 2 3 4 5 6 7 8 9 10 1 0 x ?9 8 7 6 5 4 3 ?2 比如你得到的结果是2,那么对应的就该是x,所以你最后一个号码就应该是X。 让我们看看核心的代码: var policeSta:Number=Math.floor(Math.random()*(100-11+1))+11; var personNum:Number=Math.floor(Math.random()*(9-1+1))+1; trace("派出所代码:"+policeSta); trace("随机出生的人:"+personNum); trace("派出所代码十位数:"+Math.floor(policeSta/10%10)); trace("派出所代码个位数:"+policeSta/1%10) lastNum=(5*7+1*9+10*0 + 1*5+0*8+4*4 + 2*1+9*1+8*6+9*3 + 0*7+9*9 + 0*10+1*5 + Math.floor(policeSta/10%10)*8+(policeSta/1%10)*4 + personNum*2)%11; 最重要的代码就这些,但是为了弄清这些原理,不得不去查找其他资料以求证。 好了,最后得到的身份证号码能不能通过检测呢 我们用网上别人的检测器测试下,如下: 好,通过验证! 如果你自己想弄的更完善点,那么出身地,出身日期可以自己设置,地址码需要自己去查找,原理都是一样的。 最后附上源文件下载地址:http://download.csdn.net/my/uploads (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |