搜索
查看: 18927|回复: 29

[其他] 二代身份证合法性较验

    [复制链接]

8

主题

36

帖子

254

积分

二级会员

Rank: 3Rank: 3

积分
254
发表于 2011-9-5 16:13:07 | 显示全部楼层 |阅读模式
io.open();
var A="231085198905170754"
var W={7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}
var jy={1;0;X;9;8;7;6;5;4;3;2}
var s=0
for(i=1;17;1){
        var Ai=tonumber(string.sub(A,i,i))
        s=s+(Ai*W[i])
}
var Y=s%11

if (tonumber(string.right(A,1))==jy[Y+1]){
io.print("合法")
}else{
io.print("不合法")
}


回复

使用道具 举报

74

主题

1013

帖子

5336

积分

荣誉会员

Rank: 8Rank: 8

积分
5336
发表于 2011-9-5 16:47:36 | 显示全部楼层

不错...

不错...
回复

使用道具 举报

8

主题

36

帖子

254

积分

二级会员

Rank: 3Rank: 3

积分
254
 楼主| 发表于 2011-9-5 21:56:48 | 显示全部楼层

感谢鼓励,增加点内容 io.open(); //合法性校验 var A="231085198905170754" var W={7;9;10;5;8

感谢鼓励,增加点内容
io.open();

//合法性校验
var A="231085198905170754"
var W={7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}
var jy={1;0;X;9;8;7;6;5;4;3;2}

var s=0
for(i=1;17;1){
        var Ai=tonumber(string.sub(A,i,i))
        s=s+(Ai*W[i])
}
var Y=s%11
if (tonumber(string.right(A,1))==jy[Y+1]){
        io.print("合法")
}else{
        io.print("不合法")
}

//出生日期
io.print("生日:"+string.sub(A,7,10)+"年"+string.sub(A,11,12)+"月"+string.sub(A,13,14)+"日")

//性别判断
var qxbdm=tonumber(string.sub(A,17,17))
var xb=qxbdm%2
if (xb=1){
        io.print("性别:男")
}else{
    io.print("性别:女")
}

//年龄计算
var tm=tonumber(tostring(time(,"%Y")))
var sr=tonumber(string.sub(A,7,10))
var srm=time(string.sub(A,11,12)++"/"++string.sub(A,13,14),"%m/%d")//生日月份
var tmm=time(,"%m/%d")//当前月份
if (tmm >= srm){
        io.print("年龄:"++tm-sr)
}else{
        io.print("年龄:"++tm-sr-1)
}

execute("pause")
io.close()
回复

使用道具 举报

47

主题

180

帖子

966

积分

荣誉会员

Rank: 8Rank: 8

积分
966
发表于 2011-9-6 10:26:48 | 显示全部楼层

好东西,记录一下

好东西,记录一下
用了好多年,效率杠杠的
回复

使用道具 举报

1

主题

17

帖子

811

积分

三级会员

Rank: 4

积分
811
发表于 2011-9-6 19:23:28 | 显示全部楼层

寫的很不錯,支持。

寫的很不錯,支持。
回复

使用道具 举报

13

主题

58

帖子

518

积分

培训班

积分
518
发表于 2011-9-7 16:08:50 | 显示全部楼层

[i=s] 本帖最后由 bob 于 2011-9-7 16:11 编辑 [/i] [color=black]简单讲下二代身份证编码规则,使大家有更深的认识

本帖最后由 bob 于 2011-9-7 16:11 编辑

简单讲下二代身份证编码规则,使大家有更深的认识


(1)前1、2位数字表示:所在省份的代码;
(2)第3、4位数字表示:所在城市的代码;
(3)第5、6位数字表示:所在区县的代码;
(4)第7~14位数字表示:出生年、月、日;
(5)第15、16位数字表示:所在地的派出所的代码;
(6)第17位数字表示性别:奇数表示男性,偶数表示女性;
(7)第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生, 用来检验身份证的正确性。

校检码可以是0~9的数字,有时也用x表示。
作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。
X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

校验的计算方式:

  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
回复

使用道具 举报

8

主题

36

帖子

254

积分

二级会员

Rank: 3Rank: 3

积分
254
 楼主| 发表于 2011-9-7 16:51:12 | 显示全部楼层

//属地查询 import com; var sdm=string.left(A,6) conn=com.CreateObject("ADODB.conn

//属地查询
import com;
var sdm=string.left(A,6)
conn=com.CreateObject("ADODB.connection")
conn.connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+io.fullpath("/res/dic.mdb")
conn.open()
rs=com.CreateObject("ADODB.RecordSet")
rs.open("SELECT * FROM shf WHERE id1='"+sdm+"'",conn)
io.print(rs("dz").value)
数据库无法上传,请到CSDN查找下载

回复

使用道具 举报

6

主题

175

帖子

940

积分

荣誉会员

爱生活,爱拉芳。

Rank: 8Rank: 8

积分
940
发表于 2011-9-7 16:54:31 | 显示全部楼层

[i=s] 本帖最后由 quickerfans 于 2011-9-7 16:54 编辑 [/i] [quote][size=2][color=#999999]

本帖最后由 quickerfans 于 2011-9-7 16:54 编辑
bob 发表于 2011-9-7 16:08
简单讲下二代身份证编码规则,使大家有更深的认识


很有必要,提供这些知识来理解这个贴子。谢谢
专注、深入。
回复

使用道具 举报

92

主题

1503

帖子

8141

积分

荣誉会员

Rank: 8Rank: 8

积分
8141
发表于 2011-9-7 16:55:04 | 显示全部楼层

感谢 三人行 分享代码 & bob 添加相关知识介绍 学习~

感谢 三人行 分享代码 & bob 添加相关知识介绍 学习~
回复

使用道具 举报

8

主题

36

帖子

254

积分

二级会员

Rank: 3Rank: 3

积分
254
 楼主| 发表于 2011-9-7 17:04:41 | 显示全部楼层

用aardio,挺好的!{:soso_e144:}

用aardio,挺好的!{:soso_e144:}
回复

使用道具 举报

4

主题

158

帖子

901

积分

三级会员

Rank: 4

积分
901
发表于 2011-9-7 22:37:08 | 显示全部楼层

这个收藏下,备用

这个收藏下,备用
回复

使用道具 举报

3

主题

23

帖子

176

积分

一级会员

Rank: 2

积分
176
QQ
发表于 2011-9-10 21:04:05 | 显示全部楼层

标记下 试下代码怎么样

标记下 试下代码怎么样
学习要从哪里下手呢,前辈们给点思路 参考。
回复

使用道具 举报

5

主题

46

帖子

503

积分

三级会员

Rank: 4

积分
503
发表于 2011-9-13 11:25:36 | 显示全部楼层

不错,挺有用的

不错,挺有用的
回复

使用道具 举报

48

主题

613

帖子

3427

积分

五级会员

Rank: 8Rank: 8

积分
3427
发表于 2011-12-26 16:26:43 | 显示全部楼层

这个有点意思{:3_59:}不错啊,谢谢楼主分享知识

这个有点意思不错啊,谢谢楼主分享知识
回复

使用道具 举报

12

主题

211

帖子

1271

积分

荣誉会员

Rank: 8Rank: 8

积分
1271
QQ
发表于 2012-1-6 00:01:18 | 显示全部楼层

哈哈 这个好,给那个归属地能添加上就顶好了!{:soso_e179:}~

哈哈 这个好,给那个归属地能添加上就顶好了!{:soso_e179:}~
回复

使用道具 举报

0

主题

4

帖子

45

积分

一级会员

Rank: 2

积分
45
发表于 2012-1-12 09:25:52 | 显示全部楼层

谢谢分享!

谢谢分享!
回复

使用道具 举报

3

主题

30

帖子

194

积分

一级会员

Rank: 2

积分
194
发表于 2012-1-22 00:34:34 | 显示全部楼层

很有用啊, 多谢楼主

很有用啊, 多谢楼主
回复

使用道具 举报

7

主题

126

帖子

761

积分

三级会员

Rank: 4

积分
761
QQ
发表于 2012-2-1 13:02:53 | 显示全部楼层

站位学习,下db去

站位学习,下db去
自己做的更适合自己
回复

使用道具 举报

1

主题

2

帖子

16

积分

新手入门

Rank: 1

积分
16
发表于 2012-2-1 18:07:34 | 显示全部楼层

我感觉按照这样的规则,如果同一天出生的双胞胎或者三胞胎,得出来的身份证号码岂不是要重复?

我感觉按照这样的规则,如果同一天出生的双胞胎或者三胞胎,得出来的身份证号码岂不是要重复?
回复

使用道具 举报

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-22 07:10 , Processed in 0.062500 second(s), 30 queries , Wincache On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表