用AS3.0生成身份证号码随机

来源:互联网 发布:我要投诉淘宝小二 编辑:程序博客网 时间:2024/05/17 06:58

由于我要用身份证重新注册游戏账号,但是又不能用自己本人的。

于是突发奇想自己做一个身份证生成器。

首先是出身地址:成都市锦江区

出身年月日: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

0 0
原创粉丝点击