加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:00:32 所属栏目:百科 来源:网络整理
导读:由于我要用身份证重新注册游戏账号,但是又不能用自己本人的。 于是突发奇想自己做一个身份证生成器。 首先是出身地址:成都市锦江区 出身年月日:1989年9月1日 那么当前的前14位已经出来了:510104 19890901 前6位是地址码,后8位是出身年月日 第15,16位是

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读